Linq和lambda表达

时间:2012-07-05 12:07:56

标签: linq lambda

LINQ和Lambda表达式有什么区别?使用lambda而不是linq查询有什么好处吗?

3 个答案:

答案 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。