LINQ查询中的"=>"符号是什么?

use*_*764 13 c# linq asp.net

令人惊讶的是,这方面的信息很少.我找到了很多解释LINQ的教程,但他们没有解释这个特定的运算符:

var Results = UserFavoritesContext.UserFavorites.Select(color => color.FavoriteColor);
Run Code Online (Sandbox Code Playgroud)

" x => xy "

有人可以解释这是如何工作的吗?我得到了一般语法,并且能够用它来进行查询,但这就像在不知道你在做什么的情况下做一些事情.

Fla*_*ter 23

假设您有一个列表people,并且您希望迭代它们.你会写如下:

foreach(var person in people)
{
       //do something to person
}
Run Code Online (Sandbox Code Playgroud)

请注意您自己如何选择名称person.它可能是任何一个词,但你基本上说"将列表中的每一项都作为我的person变量处理".

现在看看这个LINQ查询:

filteredPeopleList = people.Where(person => person.Name == "John");
Run Code Online (Sandbox Code Playgroud)

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

foreach(var person in people)
{
       if(person.Name == "John")
       {
           filteredPeopleList.Add(person);
       }
}
Run Code Online (Sandbox Code Playgroud)

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

我希望能够解释它.

编辑
作为一个现在删除他提到的评论的评论者,这并不是专门用于LINQ.lambda表达式不必迭代IEnumerable,它可以用于处理单个项目.
但是,LINQ是迄今为止遇到lambda最常见的地方,我发现它们的使用与foreach循环非常相似,这就是我选择这个例子的原因.