我一直在深入研究 LINQ,并且正在尝试解决这个 lambda 表达式业务。我只是没有看到语法的一些细微差别的好处。首先,在我看来,lambda 表达式主要只是使用 Where 子句的一种不同方式。那我为什么不直接使用 Where 子句呢?lambda 表达式是否更有效?
它只是为了吸引其他群体的程序员在 C# 中感到更自在的另一种语法补充吗?我还没有接触过其他更好的 lambda 表达式用例吗?
我一直在深入研究 LINQ,并且正在尝试解决这个 lambda 表达式业务。我只是没有看到语法的一些细微差别的好处。首先,在我看来,lambda 表达式主要只是使用 Where 子句的一种不同方式。那我为什么不直接使用 Where 子句呢?lambda 表达式是否更有效?
它只是为了吸引其他群体的程序员在 C# 中感到更自在的另一种语法补充吗?我还没有接触过其他更好的 lambda 表达式用例吗?
看看这篇文章:LINQ 查询语法与方法语法 :
一般来说,我们推荐查询语法,因为它通常更简单、更易读;但是,方法语法和查询语法之间没有语义差异。此外,某些查询,例如检索与指定条件匹配的元素个数,或者检索源序列中具有最大值的元素的查询,只能表示为方法调用。System.Linq 命名空间中标准查询运算符的参考文档通常使用方法语法。因此,即使在开始编写 LINQ 查询时,熟悉如何在查询和查询表达式本身中使用方法语法也很有用。
读这个。您的 LINQ 查询将在运行时由编译器转换为 Lambda 表达式。
在内部,编译器会将查询语法转换为更明确的 lambda 语法。这两种风格都没有内在的性能提升,并且大多数情况下生成的代码几乎与人们手动输入的代码相同。
主要区别在于,使用 lambda 语法,您可以将任何扩展方法链接到操作并返回 and IEnumerable<T>
。使用查询语法,您仅限于语言明确支持的特定扩展方法(因语言而异)
真正使用或不使用查询语法实际上是个人喜好问题。