关于lambda表达式的c#解释
本文关键字:解释 表达式 lambda 关于 | 更新日期: 2023-09-27 18:07:33
我刚刚发现了这个lambda表达式:
myCustomerList.GroupBy(cust => cust.CustomerId).Select(grp => grp.First());
如果我错了请纠正我,但是用这个可以区分myCustomerList
和CustomerId
,这正是我需要的。但我正在努力弄清楚它是如何工作的。
第一步是groupby
:这将产生一个字典,IGouping<long, Customer>
, CustomerId
作为字典的键。
第二个选择发生了,这是我不明白的部分。select选择客户,但是它如何从字典中选择客户呢?你需要一把钥匙,因为这个小组。钥匙在哪儿?First()
在这里有什么帮助?
你能详细告诉我最后一部分是怎么工作的吗?
它不是从字典中选择它-它说对于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的不同客户。