c# - chain linq查询的顺序执行

标签 c# linq linq-to-entities

这段代码有区别吗?

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/

相关文章:

c# - 在每个函数中使用语句 -> 通过适当的清理转换为类字段?

c# - 从 EF 作为 Dictionary<int,int> 返回 2 列,Id 和 count

c# - 简单的 MVC 评论审核

c# - 忽略联接实体的全局查询过滤器

c# - LINQ 基于最新日期的条目总和

c# - Linq "Where"比 Linq "Select"贵吗?

c# - 如何在 linq to entity 中使用标量值函数?

c# - IEnumerable<T, int>、Arity 和通用类型定义

c# - 如何使用 WebKit.NET 访问 DOM?

c# - EntityContainer 名称在不同的程序集中必须是唯一的?