【问题标题】:Comparison : LINQ vs LAMBDA Expression [closed]比较:LINQ 与 LAMBDA 表达式 [关闭]
【发布时间】:2011-04-24 07:08:44
【问题描述】:

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

哪个更好?

【问题讨论】:

标签: c# linq lambda


【解决方案1】:

我猜你是指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 的最后调用被省略了,因为它是多余的。

【讨论】:

  • 我也有同样的想法,但是根据这个网站 (blog.thijssen.ch/2009/02/…),Lambda 表达式的执行速度更快。我已将测试功能复制到应用程序中,对其进行测试,并验证了该站点上的发现。
  • 这是否意味着只学习 Lambda 表达式?
  • 'query expression' 更具可读性,尤其是对于新用户而言
  • @Omkar - 实际上我发现链式 lambda 更具可读性;)
  • 博客上的测试完全错误!首先它们都是 LINQ 一个是查询表达式,另一个是 Lambda 表达式形式。其次,只需将 LAMBDA 部分移到 LINQ 上方并重新运行测试即可查看结果!然后从查询中删除 int (强制转换成本)然后在两者中使用 intlist (不是一个数组,另一个是 List )结果将是相同的,因为编译器将它们转换为与上述答案相同的东西解释得很好.我同时使用它们:Lambda 用于简单表达式和查询更复杂的表达式。
【解决方案2】:

在反射器中进行快速比较可能会奏效。但是,从“偏好”的角度来看,我发现 lambda 语句更易于遵循、编写和全面使用,无论是对象、xml 还是其他。

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

我实际上开始了一个小话题,看看可能感兴趣的 linq 方法:

What's your favourite linq method or 'trick'

干杯..

【讨论】:

    猜你喜欢
    • 2021-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多