【发布时间】:2011-04-24 07:08:44
【问题描述】:
我需要讨论一下 LINQ 和 Lambda 表达式的性能。
哪个更好?
【问题讨论】:
我需要讨论一下 LINQ 和 Lambda 表达式的性能。
哪个更好?
【问题讨论】:
我猜你是指query expression 在这里谈论 LINQ。
它们是等价的。编译器在编译之前把query expression改成等价的Lambda表达式,所以生成的IL是完全一样的。
示例
var result = select s from intarray
where s < 5
select s + 1;
完全一样
var result = intarray.Where( s => s < 5).Select( s => s+1);
请注意,如果您这样编写查询表达式:
var result = select s from intarray
where s < 5
select s;
转换为:
var result = intarray.Where( s => s < 5);
对 Select 的最后调用被省略了,因为它是多余的。
【讨论】:
在反射器中进行快速比较可能会奏效。但是,从“偏好”的角度来看,我发现 lambda 语句更易于遵循、编写和全面使用,无论是对象、xml 还是其他。
如果性能可以忽略不计,我会选择最适合你的那个。
我实际上开始了一个小话题,看看可能感兴趣的 linq 方法:
What's your favourite linq method or 'trick'
干杯..
【讨论】: