小编典典

如何从 IGrouping 获取值

all

我有一个关于方法IGrouping的问题Select()

假设我有IEnumerable<IGrouping<int, smth>>这种方式:

var groups = list.GroupBy(x => x.ID);

哪里listList<smth>

现在我需要以IGrouping某种方式将每个值传递给另一个列表:

foreach (var v in structure)
{
    v.ListOfSmth = groups.Select(...); // <- ???
}

任何人都可以建议如何在这种情况下List<smth>从 a 中获取值 ( )吗?IGrouping<int, smth>


阅读 82

收藏
2022-05-13

共1个答案

小编典典

由于IGrouping<TKey, TElement>implements
IEnumerable<TElement>,您可以使用SelectMany将所有IEnumerables后面的IEnumerable所有内容放在一起:

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

2022-05-13