tnblog
首页
视频
资源
登录

c# - 如何从IGrouping中获取值

11770人阅读 2022/4/8 14:17 总访问:1589975 评论:0 收藏:0 手机
分类: ASP.NET

转载:https://www.itranslater.com/qa/details/2125804226692514816


我有关于IGrouping和Select()方法的问题。

可以说我用这种方式得到了

  1. List<smth>

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

列表是

  1. List<smth>

现在我需要以某种方式将每个

  1. List<smth>
的值传递给另一个列表:

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

在这种情况下,有人可以建议如何从

  1. IGrouping<int, smth>
获得价值(
  1. List<smth>
)吗?

Illia Ratkevych asked 2019-04-25T22:50:18Z
4个解决方案
213 votes

  1. IGrouping<TKey, TElement>
实施
  1. IEnumerable<TElement>
,您可以使用
  1. SelectMany
将所有
  1. IEnumerables
全部放回一个
  1. 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();
Matt Smith answered 2019-04-25T22:50:29Z
27 votes
foreach (var v in structure) 
{     
    var group = groups.Single(g => g.Key == v. ??? );
    v.ListOfSmth = group.ToList();
}

首先,您需要选择所需的组。 然后你可以使用组中的

  1. ToList
方法。 
  1. IGrouping
是一个
  1. IEnumerable
的价值观。

Tim Cools answered 2019-04-25T22:50:54Z
11 votes

从IGrouping的定义:

IGrouping<out TKey, out TElement> : IEnumerable<TElement>, IEnumerable

你可以迭代这样的元素:

IEnumerable<IGrouping<int, smth>> groups = list.GroupBy(x => x.ID)
foreach(IEnumerable<smth> element in groups)
{
//do something
}
user1275513 answered 2019-04-25T22:51:26Z
9 votes

上述答案的更明确版本:

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;
    }
}
Bronek answered 2019-04-25T22:51:52Z


评价
没有个性,不需要签名
排名
4
文章
473
粉丝
3
评论
2
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术