【问题标题】:Linq and lambda expressionLinq 和 lambda 表达式
【发布时间】:2012-07-05 12:07:55
【问题描述】:

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

【问题讨论】:

  • 我不同意这不是一个真正的问题。误解可以消除,我认为很多人混淆了这些术语。
  • 如果你问这个问题,你可能会对这个答案感兴趣:stackoverflow.com/a/471592/8155 特别是关于查询理解语法和 Lambda 表达式的部分。

标签: linq lambda


【解决方案1】:

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 的技术之一。

【讨论】:

    【解决方案2】:

    LINQ 是语言集成查询,其中 lamda 表达式类似于 .Net 2.0 的匿名方法。

    您无法真正比​​较它们可能是您感到困惑,因为 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 的示例中,方法Sytnax 包含一个lamda 表达式(num =&gt; num % 2 == 0),它的工作方式类似于一个方法,将数字作为输入,如果它们是偶数则返回true。

    它们都是相似的,用Jon Skeet, they both compile to similar code的话来说。

    【讨论】:

      【解决方案3】:

      简而言之:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-06-10
        • 1970-01-01
        相关资源
        最近更新 更多