本文介绍了如何从 IGrouping 获取值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个关于 IGroupingSelect() 方法的问题.

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);

其中 listList.

现在我需要以某种方式将每个 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 获取值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

05-17 16:51