C# 比较:LINQ与LAMBDA表达式

C# 比较:LINQ与LAMBDA表达式,c#,linq,lambda,C#,Linq,Lambda,我需要讨论一下LINQ和Lambda表达式的性能 哪一个更好?我猜在这里谈论LINQ时,您指的是查询表达式 它们是等价的。编译器在编译之前将查询表达式更改为等效的Lambda表达式,因此生成的IL完全相同 示例 var result = select s from intarray where s < 5 select s + 1; var result=从阵列中选择s 其中sss+1); 请注意,如果您这样编写查询表达式: var

我需要讨论一下LINQ和Lambda表达式的性能


哪一个更好?

我猜在这里谈论LINQ时,您指的是
查询表达式

它们是等价的。编译器在编译之前将
查询表达式
更改为等效的Lambda表达式,因此生成的IL完全相同

示例

var result = select s from intarray
             where s < 5
             select s + 1;
var result=从阵列中选择s
其中s<5
选择s+1;
完全一样

var result = intarray.Where( s => s < 5).Select( s => s+1);
var result=intarray.Where(s=>s<5)。选择(s=>s+1);
请注意,如果您这样编写查询表达式:

var result = select s from intarray
             where s < 5
             select s;
var result=从阵列中选择s
其中s<5
选择s;
它被转换为:

var result = intarray.Where( s => s < 5);
var result=intarray.Where(s=>s<5);

选择的最后一个调用被省略,因为它是多余的。

在reflector中快速比较可能就可以做到这一点。然而,从“首选项”的角度来看,我发现lambda语句更容易理解、编写和全面使用,无论是对象、xml还是其他什么

如果性能可以忽略不计,我会选择最适合你的

实际上,我从一个小主题开始,研究linq方法,这可能很有趣:


干杯。

你可能想看看这里,我也会这么想,但是,根据这个网站(),Lambda表达式执行得更快。我已将测试功能复制到一个应用程序中,对其进行测试,并在该网站上验证了结果。这是否意味着只学习Lambda表达式?“查询表达式”更具可读性,尤其是对于新用户ppl@Omkar-事实上,我发现链接的lambda更具可读性;)博客上的测试是完全错误的!首先,它们都是LINQ,一个是查询表达式,另一个是Lambda表达式形式。第二,只需将LAMBDA部分移到LINQ的上方,然后重新运行测试以查看结果!然后从查询中删除int(强制转换成本),然后在两者中使用int列表(不是一个列表中的数组,而是另一个列表中的数组)。结果将是相同的,因为编译器将它们转换为与上面解释的答案相同的内容。我同时使用它们:Lambda表示简单表达式,query表示更复杂的表达式。