【问题标题】:Flatten a List<Tuple<string,List<Object>>> [duplicate]展平 List<Tuple<string,List<Object>>> [重复]
【发布时间】: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 可以以更舒适的方式完成此操作,遗憾的是我没有太多经验。

提前谢谢:)

【问题讨论】:

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

标签: c# linq


【解决方案1】:

您可能想使用SelectMany:

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

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

【讨论】:

  • 完美,这正是我想要的,谢谢!!
猜你喜欢
  • 2018-01-25
  • 1970-01-01
  • 1970-01-01
  • 2018-09-22
  • 1970-01-01
  • 2016-09-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多