首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何从IGrouping获取值

如何从IGrouping获取值
EN

Stack Overflow用户
提问于 2011-12-15 21:43:11
回答 6查看 242.1K关注 0票数 254

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

假设我有一个这样的IEnumerable<IGrouping<int, smth>>

代码语言:javascript
复制
var groups = list.GroupBy(x => x.ID);

其中list是一个List<smth>

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

代码语言:javascript
复制
foreach (var v in structure)
{
    v.ListOfSmth = groups.Select(...); // <- ???
}

在这种情况下,有人能建议如何从IGrouping<int, smth>中获取值(List<smth>)吗?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2011-12-15 21:56:13

由于IGrouping<TKey, TElement>实现了IEnumerable<TElement>,因此您可以使用SelectMany将所有IEnumerables放回一个IEnumerable中:

代码语言:javascript
复制
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

此解决方案的视频评论:https://youtu.be/6BsU1n1KTdo

票数 322
EN

Stack Overflow用户

发布于 2011-12-15 21:52:48

代码语言:javascript
复制
foreach (var v in structure) 
{     
    var group = groups.Single(g => g.Key == v. ??? );
    v.ListOfSmth = group.ToList();
}

首先,您需要选择所需的组。然后,您可以在组上使用的ToList方法。IGrouping是这些值的IEnumerable

票数 42
EN

Stack Overflow用户

发布于 2015-05-25 05:16:36

上述答案的更清晰版本:

代码语言:javascript
复制
IEnumerable<IGrouping<int, ClassA>> groups = list.GroupBy(x => x.PropertyIntOfClassA);

foreach (var groupingByClassA in groups)
{
    int propertyIntOfClassA = groupingByClassA.Key;

    //iterating through values
    foreach (var classA in groupingByClassA)
    {
        int key = classA.PropertyIntOfClassA;
    }
}
票数 24
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8521025

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档