4

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

4

3 回答 3

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);

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.

于 2012-07-05T12:14:54.807 回答
2

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 的话来说,它们都编译成相似的代码

于 2012-07-05T12:12:34.903 回答
0

简而言之:

LINQ 是一种查询技术(Language Integrated Query)。LINQ 广泛使用 lambda 作为标准查询运算符方法(例如 Where 子句)的参数。

lambda 表达式是包含表达式和语句的匿名函数。它与 LINQ 完全分离和不同。

于 2012-07-05T12:13:10.250 回答