c# - LINQ/Entity Framework中的方法语法和查询语法的延期执行是否以相同的方式工作?

标签 c# linq entity-framework

我想知道Deferred Execution是否可以用于方法语法和查询语法中的查询,我想知道是否存在任何区别。谢谢

最佳答案

实际上,只有方法语法。使用查询语法编写查询时,编译器会将其转换为方法语法(实际上是静态方法调用)。

例:

扩展方法调用(方法语法)

var query = sequence.Select(x => x.Property);


编译为(是的,扩展方法只是用于调用静态类方法的语法糖)

var query = Queryable.Select(sequence, x => x.Property);


给出相同的结果(这是相同的Queryable / Enumerable方法调用的语法糖)

var query = from x in sequence
            select x.Property;


因此,两种语法都产生相同的代码。因此,您所使用的语法没有区别-延迟执行(以及其他任何方式)将以相同的方式工作。

关于c# - LINQ/Entity Framework中的方法语法和查询语法的延期执行是否以相同的方式工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13622197/

相关文章:

c# - 不支持每种类型的多个对象集。对象集 IdentityUsers' 和 Users 都可以包含类型的实例

c# - 使用 resx 文件进行本地化会生成 MissingManifestResourceException

c# - ASP.Net MVC : Submit array/collection in a single parameter

c# - 在 C# 中,如何轻松更改事件处理程序的名称?

c# - Entity Framework 映射奇怪 - 成员名称不能与其封闭类型相同

c# - DbArithmeticExpression 参数必须具有数字通用类型

c# - 如何将 View 内的命令绑定(bind)到 MvvmCross 中的 ViewModel

c# - 为什么无法在 LinQ 中使用 SqlFunctions 将 int 转换为 string?

c# - LINQ 中的嵌套匿名类型

c# - 将嵌套的 foreach 编写为 LINQ 以聚合两个单独的值