何时在LINQ中使用lambda表达式而不是Where子句

时间:2009-06-28 13:52:20

标签: linq lambda where-clause

我一直在深入研究LINQ,而我正在尝试挖掘这个lambda表达式业务。我只是没有看到语法的一些细微差别的好处。首先,在我看来,lambda表达式大多只是使用Where子句的另一种方式。为什么我不会只使用Where子句呢? lambda表达式更有效吗?

是否只是另一个语法上的补充,从另一个组中吸引程序员在C#中感觉更舒服?还有其他更好的用于lambda表达式的用例,我还没有接触过吗?

4 个答案:

答案 0 :(得分:9)

看一下这篇文章:LINQ Query Syntax versus Method Syntax

  

通常,我们建议使用查询语法   因为它通常更简单,更多   可读;但是没有语义   方法语法与方法的区别   查询语法。另外,一些   查询,例如检索的查询   匹配a的元素数量   指定的条件,或检索   具有最大值的元素   在源序列中,只能是   表示为方法调用。该   的参考文件   标准查询运算符   System.Linq命名空间通常使用   方法语法。因此,即使在   开始编写LINQ查询,   熟悉如何做是很有用的   在查询中使用方法语法   查询表达式本身。

还有这个问题:LINQ: Dot Notation vs Query Expression

答案 1 :(得分:1)

阅读this。您的LINQ查询将在运行时由编译器转换为Lambda表达式。

答案 2 :(得分:1)

在内部,编译器会将查询语法转换为更明确的lambda语法。这两种风格都没有固有的性能提升,大多数情况下生成的代码几乎与人们手动输入的内容完全相同。

主要的区别在于,使用lambda语法,您可以链接任何操作关闭和返回的扩展方法IEnumerable<T>。使用查询语法,您将受限于语言明确支持的特定扩展方法(因语言而异)

真正使用或不使用查询语法实际上是个人偏好的问题。

答案 3 :(得分:0)