实体框架 Linq 查询:.Where 链 vs &&
Posted
技术标签:
【中文标题】实体框架 Linq 查询:.Where 链 vs &&【英文标题】:Entity Framework Linq query: .Where chain vs && 【发布时间】:2011-06-29 02:23:05 【问题描述】:这个问题与使用带有实体框架的 Linq 进行查询优化有关。
链接 .Where
子句和在带有实体框架的 linq 查询的单个 .Where
子句中使用 &&
之间有什么区别吗?
例如:假设我有以下代码:
var result = context.SomeEntity.Where(exp1).Where(exp2);
或
var result = context.SomeEntity.Where(exp1 && exp2);
在评估这些产生相同结果的语句时,linq 和实体框架是否以相同的方式评估它们?即,两者将具有相同的执行计划,因此同样有效?
【问题讨论】:
【参考方案1】:是的,两者都有相同的执行计划。我添加了一个 sql 跟踪,并且都创建了相同的 SQL 语句
【讨论】:
【参考方案2】:我总是选择&&
,因为它使代码更易于阅读。通过使用多个 Where 这将产生大量额外的噪音并分散逻辑的注意力。
【讨论】:
如果 && 语句较短且很少,则更易于阅读,但如果您将多个较长的语句链接在一起,则 .Where 链接更有意义且更具可读性。以上是关于实体框架 Linq 查询:.Where 链 vs &&的主要内容,如果未能解决你的问题,请参考以下文章
具有 LINQ 的实体框架在 WHERE 子句中使用 CONTAINS 非常慢且具有大整数列表