关于lambda表达式的c#解释

本文关键字:解释 表达式 lambda 关于 | 更新日期: 2023-09-27 18:07:33

我刚刚发现了这个lambda表达式:

myCustomerList.GroupBy(cust => cust.CustomerId).Select(grp => grp.First());

如果我错了请纠正我,但是用这个可以区分myCustomerListCustomerId,这正是我需要的。但我正在努力弄清楚它是如何工作的。

第一步是groupby:这将产生一个字典,IGouping<long, Customer>, CustomerId作为字典的键。

第二个选择发生了,这是我不明白的部分。select选择客户,但是它如何从字典中选择客户呢?你需要一把钥匙,因为这个小组。钥匙在哪儿?First()在这里有什么帮助?

你能详细告诉我最后一部分是怎么工作的吗?

关于lambda表达式的c#解释

它不是从字典中选择它-它说对于GroupBy 结果中的每个分组,选择第一个条目。注意IGrouping<TKey, TElement>实现了IEnumerable<TElement>

基本上一个组有两件事:

  • 元素列表

这是从每个组中选择第一个元素。

让我们说你的集合是:

{Name=a, CustomerId=1}
{Name=a, CustomerId=1}
{Name=b, CustomerId=2}
{Name=b, CustomerId=2}

group by后变为

{ key = 1, Values = {Name=a, CustomerId=1}, {Name=a, CustomerId=1} }
{ key = 2, Values = {Name=a, CustomerId=2}, {Name=a, CustomerId=2} }

在最后一次选择之后(即首先从上述表示法中的值中选择),它变成:

{Name=a, CustomerId=1}
{Name=a, CustomerId=2}

因此它是基于ID的不同客户。