LINQ和Lambda表达式有什么区别?使用lambda而不是linq查询有什么好处吗?
答案 0 :(得分:14)
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);
这意味着你的问题真的无法回答。 Linq和lambdas不可互换,而lambdas是用于实现linq的技术之一。
答案 1 :(得分:2)
LINQ是语言集成查询,其中lamda表达式类似于.Net 2.0的Annonymous方法。
你无法真正比较它们可能会让你感到困惑,因为LINQ大多数时候都与lamda表达式相关联。
您需要看到这篇文章:Basics of LINQ & Lamda Expressions
编辑:(我不太确定,但您可能正在寻找Query Syntax and 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, they both compile to similar code的话说。
答案 2 :(得分:0)
简而言之:
LINQ是一种查询技术(语言集成查询)。 LINQ广泛使用lambda作为标准查询运算符方法的参数,例如Where子句。
lambda表达式是一个包含表达式和语句的匿名函数。它完全独立于LINQ。