LINQ查询和Lambda表达式之间的区别

Ulh*_*ano 8 linq lambda

为什么在我们使用LINQ查询时只使用lambda表达式来缩短代码长度,提高开发速度,或者是否有任何其他原因只能通过Lambda表达式而不是LINQ查询来实现.

Jon*_*eet 21

查询表达式仅涵盖LINQ运算符的一小部分,并且仅在涉及实际表达式时才适用,而不是(假设)具有Func<T, bool>充当谓词的操作,在这种情况下,事情变得丑陋.所以不要写:

Func<Foo, bool> predicate = ...; // Get predicate from somewhere
var query = from x in collection
            where predicate(x)
            select x;
Run Code Online (Sandbox Code Playgroud)

我更愿意写:

Func<Foo, bool> predicate = ...; // Get predicate from somewhere
var query = collection.Where(predicate);
Run Code Online (Sandbox Code Playgroud)

还有其他各种情况,使用非查询表达式语法更简单,特别是如果您的查询仅使用单个运算符.

查询表达式被有效地转换为非查询表达式,因此您在查询表达式中可以执行的任何操作可以在非查询表达式中表达.使用查询表达式,使代码更简单,更易读; 不要在没有的地方使用它们.

我有更多关于查询表达式如何在您可能感兴趣的博客文章中工作的信息.