【发布时间】:2020-12-06 13:50:31
【问题描述】:
我有一个包含以下列的客户表: Id、FirstName、LastName、CurrencyId、Gender。
我想选择与 Id 10 对应的客户货币,所以我正在做这样的事情:
var currencyId = Db.Clients.FirstOrDefault(c=>c.Id == 10)?.CurrencyId;
此行是从 Db 中获取所有属性并在代码中选择货币还是在数据库中执行类似的操作:
SELECT currencyId FROM Client WHERE ID = 10
或者我应该这样写 linq:
var currencyId = Db.Clients.Where(c=>c.Id == 10).Select(c=>c.CurrnecyId).FirstOrDefault();
这两个查询有什么区别? 将上述 SQL 查询转换为 linq 查询的正确方法是什么?
【问题讨论】:
-
没什么。您必须查看 SQL 命令文本才能确定差异。
-
@jdweng 根本不正确 - 这些查询是不同的。第一个可以抛出异常,而第二个会给你一个默认值(例如
0) -
@DavidG 注意到“?”我在第一个查询的 firstOrDefault() 之后添加,这样它就不会抛出异常
-
好的,但还是不一样。第一个会给你
null,第二个仍然给你一个默认值,比如0。 -
@DavidG 好的,谢谢。但是翻译后的 SQL 查询有区别吗?
标签: c# mysql sql-server linq linq-to-sql