Rad*_*u D 41 .net linq performance
以下两个陈述之间是否有任何性能差异?
from item in collection
where item.id == 3
select item
Run Code Online (Sandbox Code Playgroud)
和
collection.Where(item => item.id ==3)
Run Code Online (Sandbox Code Playgroud)
一般来说,LINQ语法和方法链之间是否有任何性能差异?
Jon*_*eet 55
不,因为它们被编译成完全相同的代码.
编译器基本上将查询表达式"预处理"为"没有查询表达式的C#3",然后正常应用重载规则,lambda表达式转换等.这是一个非常优雅的系统,这意味着查询表达式的规则仅限于规范的一小部分.
当然,你可以用"链式方法"语法编写各种各样的东西,这些语法不能用查询表达式语法编写,或者由于使用其他重载或者方法根本不受支持(例如Count()) - 但除非你使用那些,编译后的代码将完全相同.为任何特定方案选择最易读的替代方案.