繁体   English   中英

对于LINQ / Entity Framework中的方法语法和查询语法,延迟执行是否以相同的方式工作?

[英]Does Deferred Execution works in the same way for method syntax and query syntax in 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;

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

查询语法只是方法语法的语法糖,因此没有区别。

两者的延期执行是相同的。 查询语法实际上是在编译时编译为方法语法的。

LINQ查询语法与方法语法(C#)-MSDN

LINQ入门文档中的大多数查询都使用C#3.0中引入的声明性查询语法作为查询表达式编写。 但是,.NET公共语言运行库(CLR)本身没有查询语法的概念。 因此, 在编译时,查询表达式将转换为CLR可以理解的内容:方法调用 这些方法称为标准查询运算符,它们具有诸如Where,Select,GroupBy,Join,Max,Average等名称。 您可以使用方法语法而不是查询语法直接调用它们。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM