问题描述
我有一个关于 IGrouping
和 Select()
方法的问题.
I have a question about IGrouping
and the Select()
method.
假设我有一个 IEnumerable>
以这种方式:
Let's say I've got an IEnumerable<IGrouping<int, smth>>
in this way:
var groups = list.GroupBy(x => x.ID);
其中 list
是 List
.
现在我需要以某种方式将每个 IGrouping
的值传递给另一个列表:
And now I need to pass values of each IGrouping
to another list in some way:
foreach (var v in structure)
{
v.ListOfSmth = groups.Select(...); // <- ???
}
有人可以建议如何在这样的上下文中从 IGrouping
获取值 (List
)?
推荐答案
由于IGrouping
实现了IEnumerable
,所以可以使用SelectMany
将所有 IEnumerables
放回一个 IEnumerable
中:
Since IGrouping<TKey, TElement>
implements IEnumerable<TElement>
, you can use SelectMany
to put all the IEnumerables
back into one IEnumerable
all together:
List<smth> list = new List<smth>();
IEnumerable<IGrouping<int, smth>> groups = list.GroupBy(x => x.id);
IEnumerable<smth> smths = groups.SelectMany(group => group);
List<smth> newList = smths.ToList();
以下是构建/运行的示例:https://dotnetfiddle.net/DyuaaP
Here's an example that builds/runs: https://dotnetfiddle.net/DyuaaP
此解决方案的视频评论:https://youtu.be/6BsU1n1KTdo
Video commentary of this solution: https://youtu.be/6BsU1n1KTdo
这篇关于如何从 IGrouping 获取值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!