【问题标题】:Linq list of lists to single listLinq 列表列表到单个列表
【发布时间】:2009-07-17 20:34:54
【问题描述】:

似乎这是一种已经得到回答但我找不到的东西。

我的问题很简单,我怎样才能在一个语句中做到这一点,这样我就可以有一个输出我的最终列表的单个 linq 语句,而不是必须新建空列表然后在下一行中聚合。 details 是一个项目列表,每个项目都包含一个住宅列表,我只想要一个平面列表中的所有住宅。

var residences = new List<DAL.AppForm_Residences>();
details.Select(d => d.AppForm_Residences).ToList().ForEach(d => residences.AddRange(d));

【问题讨论】:

标签: c# linq


【解决方案1】:

您想使用SelectMany 扩展方法。

var residences = details.SelectMany(d => d.AppForm_Residences).ToList();

【讨论】:

  • 谢谢。 @JaredPar 选择了错误的元素,但感谢你们的指导。
【解决方案2】:

使用 SelectMany

var all = residences.SelectMany(x => x.AppForm_Residences);

【讨论】:

    【解决方案3】:

    这是一个示例代码:

    List<int> listA = new List<int> { 1, 2, 3, 4, 5, 6 };
    
    List<int> listB = new List<int> { 11, 12, 13, 14, 15, 16 };
    
    List<List<int>> listOfLists = new List<List<int>> { listA, listB };
    
    List<int> flattenedList = listOfLists.SelectMany(d => d).ToList();
    
    foreach (int item in flattenedList)
    {
        Console.WriteLine(item);
    }
    

    输出将是:

    1
    2
    3
    4
    5
    6
    11
    12
    13
    14
    15
    16
    Press any key to continue . . .
    

    【讨论】:

      【解决方案4】:

      对于那些想要查询表达式语法的人:您使用两个 from 语句

      var residences = (from d in details from a in d.AppForm_Residences select a).ToList();
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-10-13
        • 1970-01-01
        • 2014-09-27
        • 2012-07-26
        • 1970-01-01
        • 2020-09-13
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多