令人惊讶的是,这方面的信息很少.我找到了很多解释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循环非常相似,这就是我选择这个例子的原因.