LINQ 和 Lambda 表达式有什么区别?使用 lambda 而不是 linq 查询有什么好处吗?
3 回答
Linq 是语言集成查询。在使用 linq 时,经常会使用一个小的匿名函数作为参数。那个小的匿名函数是一个 lambda 表达式。
var q = someList.Where(a => a > 7);
在上面的查询a => a > 7
中是一个 lambda 表达式。这相当于编写一个小型实用程序方法并将其传递给Where
:
bool smallMethod(int value)
{
return value > 7;
}
// Inside another function:
var q = someList.Where(smallMethod);
This means that your question is really not possible to answer. Linq and lambdas are not interchangeable, rather lambdas are one of the technologies used to implement linq.
LINQ 是语言集成查询,其中 lamda 表达式类似于 .Net 2.0 的匿名方法。
您无法真正比较它们,您可能会感到困惑,因为 LINQ 大部分时间都与 lamda 表达式相关联。
你需要看这篇文章:LINQ & Lamda 表达式基础
编辑:(我不太确定,但可能是您正在寻找Query Syntax 和 Method Sytnax之间的区别)
int[] numbers = { 5, 10, 8, 3, 6, 12};
//Query syntax:
IEnumerable<int> numQuery1 =
from num in numbers
where num % 2 == 0
orderby num
select num;
//Method syntax:
IEnumerable<int> numQuery2 = numbers.Where(num => num % 2 == 0).OrderBy(n => n);
在上面取自MSDN的示例中,Method Sytnax 包含一个 lamda 表达式(num => num % 2 == 0)
,其工作方式类似于方法,将数字作为输入,如果它们是偶数则返回 true。
它们都很相似,用Jon Skeet 的话来说,它们都编译成相似的代码。
简而言之:
LINQ 是一种查询技术(Language Integrated Query)。LINQ 广泛使用 lambda 作为标准查询运算符方法(例如 Where 子句)的参数。
lambda 表达式是包含表达式和语句的匿名函数。它与 LINQ 完全分离和不同。