这段代码有区别吗?
var query = DbContext.Customers
.Where(<condition>)
.Include("Address");
和
var query = DbContext.Customers
.Include("Address")
.Where(<condition>);
是延迟查询,不知道是不是等价的?或者第二种情况where
是在Include
之后执行的?
谢谢。
最佳答案
对于 EF,select 之前的顺序无关紧要。 LINQ 查询转换为 SQL 查询并运行,SQL 查询优化器不关心原始查询的顺序。
正如 Patryk 所指出的,当以下语句修改查询的结构时,Include
的顺序可能特别重要,但 where 子句不会这样做。
在其他 LINQ 查询、LINQ-to-Objects 中,顺序可能非常重要,因为查询没有像 SQL 那样重新优化,而是简单地从上到下处理,并且一些 LINQ 方法需要以前的方法才能运行完成并在处理第一个元素之前处理结果(例如 OrderBy
)。
关于c# - chain linq查询的顺序执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17853363/