展平 List<Tuple<string,List<Object>>> [重复]

Posted

技术标签:

【中文标题】展平 List<Tuple<string,List<Object>>> [重复]【英文标题】:Flatten a List<Tuple<string,List<Object>>> [duplicate] 【发布时间】:2017-02-01 12:30:00 【问题描述】:

我有以下属性:

List<Tuple<string,List<Object>>> GroupedItems

我需要一个所有对象的列表。

目前我正在使用一种非常实用的循环方法:

          List<Object> flatList = new List<Object>();
          foreach (var y in container.GroupedItems)
          
            foreach(var z in y.Item2)
            
            flatList.Add(z);
            
          

我确信使用 LINQ 可以以更舒适的方式完成此操作,遗憾的是我没有太多经验。

提前谢谢:)

【问题讨论】:

containerItem2 是什么?请参阅How to create a Minimal, Complete, and Verifiable example。 您不需要知道什么是“容器”,它是很好的抽象。 'Item2' - 显然是一些对象,因为它被添加到这样的列表中。 @ChrisPickford Item2Tuple&lt;T1, T2&gt; 中的第二个属性的名称 【参考方案1】:

您可能想使用SelectMany:

List<Object> flatList = GroupedItems.SelectMany(item => item.Item2).ToList();

SelectMany 将枚举中的所有项投影到另一个枚举。在您的情况下,它将每个元组投影到该元组中的对象列表 (Item2)。

【讨论】:

完美,这正是我想要的,谢谢!!

以上是关于展平 List<Tuple<string,List<Object>>> [重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何在 linq 中展平字典<string,List<string>> 并在结果中保留键

在捕获索引时使用 LINQ 展平列表

使用 Streams 展平 Java 对象

C# Tuple 创建一个新二元集合

根据条件展平 R 中的列表

r JSON到CSV转换器。使用`jsonlite` R包,展平所有层次结构并将所有剩余的列表/数组转换为strin