c# - LINQ 查询中的 "=>"标志是什么?

标签 c# asp.net linq

令人吃惊的是,这方面的信息如此之少。我找到了大量解释 LINQ 的教程,但它们没有解释这个特定的运算符:

var Results = UserFavoritesContext.UserFavorites.Select(color => color.FavoriteColor);

x => x.y

有人可以解释一下这是如何工作的吗?我掌握了一般语法并能够使用它进行查询,但这就像在不知道自己在做什么的情况下做某事。

最佳答案

假设您有一个 people 列表,并且您想要遍历他们。你会写这样的东西:

foreach(var person in people)
{
       //do something to person
}

请注意您自己是如何选择名称 person 的。它可以是任何词,但您基本上是说“将列表中的每一项作为我的 person 变量进行处理”。

现在看看这个 LINQ 查询:

filteredPeopleList = people.Where(person => person.Name == "John");

同样,您基本上选择了 person 作为原始列表中每个对象的占位符名称(一次一个)。上面的 Linq 查询等同于

foreach(var person in people)
{
       if(person.Name == "John")
       {
           filteredPeopleList.Add(person);
       }
}

对我来说,x => x.y 基本上是在说“对于我们处理的每个变量(我们称它为 x),请对其执行以下操作(x.y,获取y属性)”

我希望这能解释清楚。

编辑
正如现在删除他的评论的评论者所提到的,这并非专门用于 LINQ。 lambda 表达式不必遍历 IEnumerable,它可用于处理单个项目。
然而,LINQ 是迄今为止最常遇到 lambda 的地方,我发现它们的用法与 foreach 循环非常相似,这就是我选择这个例子的原因。

关于c# - LINQ 查询中的 "=>"标志是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29555852/

相关文章:

c# - 如何访问 LINQ 查询中的关联?

c# - 在基于网格的游戏中放置墙壁/道路

c# - 如何从 Windows Phone 8.1 Silverlight 中的列表框中删除所选项目

c# - Linq 代码无法正常工作

c# - 使用 Bootstrap 显示 MVC 表单的正确方法

asp.net - 将数据从数据集绑定(bind)到 <asp :Table>

javascript - 单击 asp 按钮时未显示 div 标签

c# - 如何从另一个页面的代码后面访问变量?

C# Core 2.0 - 根据另一个模型中的数据从一个模型获取数据?

.net - LINQ 查询的索引