我一直在深入研究LINQ,而我正在尝试挖掘这个lambda表达式业务。我只是没有看到语法的一些细微差别的好处。首先,在我看来,lambda表达式大多只是使用Where子句的另一种方式。为什么我不会只使用Where子句呢? lambda表达式更有效吗?
是否只是另一个语法上的补充,从另一个组中吸引程序员在C#中感觉更舒服?还有其他更好的用于lambda表达式的用例,我还没有接触过吗?
答案 0 :(得分:9)
看一下这篇文章:LINQ Query Syntax versus Method Syntax :
通常,我们建议使用查询语法 因为它通常更简单,更多 可读;但是没有语义 方法语法与方法的区别 查询语法。另外,一些 查询,例如检索的查询 匹配a的元素数量 指定的条件,或检索 具有最大值的元素 在源序列中,只能是 表示为方法调用。该 的参考文件 标准查询运算符 System.Linq命名空间通常使用 方法语法。因此,即使在 开始编写LINQ查询, 熟悉如何做是很有用的 在查询中使用方法语法 查询表达式本身。
答案 1 :(得分:1)
阅读this。您的LINQ查询将在运行时由编译器转换为Lambda表达式。
答案 2 :(得分:1)
在内部,编译器会将查询语法转换为更明确的lambda语法。这两种风格都没有固有的性能提升,大多数情况下生成的代码几乎与人们手动输入的内容完全相同。
主要的区别在于,使用lambda语法,您可以链接任何操作关闭和返回的扩展方法IEnumerable<T>
。使用查询语法,您将受限于语言明确支持的特定扩展方法(因语言而异)
真正使用或不使用查询语法实际上是个人偏好的问题。
答案 3 :(得分:0)