【问题标题】:What does this way of writing mean? [duplicate]这种写法是什么意思? [复制]
【发布时间】:2015-04-28 22:16:12
【问题描述】:

这可能是一个愚蠢的问题,但是当我看到这样的代码时

var newList = list.OrderBy(x => x.Product.Name).toList();

我想知道(x => x.Product.Name) 是什么意思?
比如,x 是什么,=> 是什么意思?

我不知道要搜索什么才能获得有关此主题的更多信息,我们将不胜感激,谢谢。

【问题讨论】:

  • (输入参数) => 表达式读取这个msdn.microsoft.com/en-us/library/bb397687.aspx
  • 你可以搜索C# Lambda Expressions
  • @Mike 如果你知道他们叫那个。您也可以搜索“C# 等于大于”。
  • @CodeCaster,我喜欢这个
  • 只是补充一下,要搜索这样的编程术语,请使用 symbolhound.com ,我搜索了 C# => 并查看了 results

标签: c#


【解决方案1】:

在 google 上查找 Lambda 表达式。这是 Lambda 表达式的 MS 页面的链接 - https://msdn.microsoft.com/en-us/library/bb397687.aspx

【讨论】:

    【解决方案2】:

    它被称为Lambda Expression

    lambda 表达式是一种将方法作为参数传递的方式。上面的 lambda 表达式可以写成一个方法,可能是这样的:

    public string GetProductName(Thing x)
    {
         return x.Product.Name;
    }
    

    所以我们看到x 是方法中的参数,在这种情况下是 lambda 表达式。

    LINQ 中的 OrderBy 方法然后使用这个“方法”或 lambda 表达式来知道如何对列表进行排序 - OrderBy 本身对您的对象或如何对它们进行排序一无所知,因此我们传入一个 lambda 哪个顺序通过调用。


    IQueryable 的情况下,lambda 表达式实际上并不是被调用的代码,而是构建了一个表达式树。 lambda 可用于满足委托,也可用于构建表达式树。这是一个有点复杂的主题,但值得一提。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-03
      • 1970-01-01
      • 2015-03-12
      相关资源
      最近更新 更多