9

这段代码有区别吗?

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

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

这是延迟查询,我不知道,它是否等效?还是在第二种情况下where执行后Include

谢谢。

4

1 回答 1

5

对于 EF 顺序之前的 select 无所谓。LINQ 查询转换为 SQL 查询并运行,SQL 查询优化器不关心原始查询的顺序。

正如 Patryk 指出的那样,Include当以下语句修改查询结构时,顺序可能特别重要,但 where 子句不会这样做。

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

于 2013-08-09T01:49:37.690 回答