订单执行链linq查询

时间:2013-07-25 08:55:46

标签: c# linq linq-to-entities

此代码有区别吗?

var query = DbContext.Customers
                .Where(<condition>)
                .Include("Address");

var query = DbContext.Customers
                .Include("Address")
                .Where(<condition>);

它是自定义查询,我不知道,它是否相同?或者在第二种情况下whereInclude之后执行?

感谢。

1 个答案:

答案 0 :(得分:5)

对于选择之前的EF订单无关紧要。 LINQ查询转换为SQL查询并运行,SQL查询优化器不关心原始查询的顺序。

正如Patryk指出,当以下语句修改查询结构时,顺序可能与Include具体相关,但是where子句不会这样做。

在其他LINQ查询中,LINQ-to-Objects,顺序可能非常重要,因为查询没有按照SQL的方式重新优化,只是从上到下处理,而一些LINQ方法需要以前的方法才能运行完成并且在继续进行第一个元素(例如OrderBy)之前处理结果。