查询表达式与Lambda表达式

bio*_*iox 3 c# linq performance lambda query-expressions

使用查询表达式而不是lambda表达式有什么意义?它不仅更慢,更冗长(见这里):

示例(来自上面的链接):

QE: var products = from p in northwind.Products where p.Category.CategoryName == "Beverages" select p;
LE: var products = northwind.Products.Where(p => p.Category.CategoryName == "Beverages");
Run Code Online (Sandbox Code Playgroud)

结果(来自上面的链接):

QE: 00:00:00.0019557, avg. 00:00:00.0004552
LE: 00:00:00.0000574, avg. 00:00:00.0000133
Run Code Online (Sandbox Code Playgroud)

为了便于阅读,是否真的值得将代码放慢34倍?

Sim*_*ead 10

它们最终是相同的.

您的文章测试显示速度非常快的原因是延迟执行.该代码实际上并没有在他们正在计时的区域做任何事情.它只会在.ToList()被调用时执行某些操作或强制查询(lambda或其他)的其他方法.它可以快速解释查询(非常快速,查看您提供的时间),但在查询得到评估时,它实际上是循环数据的另一个野兽.

编辑:

我刚看完这篇文章.你会注意到,根据作者的说法,for循环是所有3中最慢的(查询表达式,方法语法,for循环).这是非常错误的.

基本for循环如何比lambda慢几千倍?这没有意义.循环是迭代数据的最基本方式.lambda做什么比循环更令人难以置信?

......他们没有.他们还没有执行.看哪:推迟执行.