令人吃惊的是,这方面的信息如此之少。我找到了大量解释 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/