Linq列表列表到单个列表

Jar*_*man 183 c# linq

似乎这是一种本来可以回答但我无法找到它的东西.

我的问题非常简单,如何在一个语句中执行此操作,以便不必新建空列表然后在下一行聚合,我可以使用单个linq语句输出我的最终列表.详细信息是每个包含住宅列表的项目列表,我只想将所有住宅放在一个单位列表中.

var residences = new List<DAL.AppForm_Residences>();
details.Select(d => d.AppForm_Residences).ToList().ForEach(d => residences.AddRange(d));
Run Code Online (Sandbox Code Playgroud)

Nol*_*rin 285

您想使用SelectMany扩展方法.

var residences = details.SelectMany(d => d.AppForm_Residences).ToList();
Run Code Online (Sandbox Code Playgroud)

  • 谢谢.@JaredPar从错误的元素中选择,但是谢谢你们的指导. (3认同)

Jar*_*Par 45

使用SelectMany

var all = residences.SelectMany(x => x.AppForm_Residences);
Run Code Online (Sandbox Code Playgroud)


Wil*_* Wu 32

有一个示例代码:

    List<List<int>> l = new List<List<int>>();

    List<int> a = new List<int>();
    a.Add(1);
    a.Add(2);
    a.Add(3);
    a.Add(4);
    a.Add(5);
    a.Add(6);
    List<int> b = new List<int>();
    b.Add(11);
    b.Add(12);
    b.Add(13);
    b.Add(14);
    b.Add(15);
    b.Add(16);

    l.Add(a);
    l.Add(b);

    var r = l.SelectMany(d => d).ToList();
    foreach(int i in r)
    {
        Console.WriteLine(i);
    }
Run Code Online (Sandbox Code Playgroud)

输出将是:

1
2
3
4
5
6
11
12
13
14
15
16
Press any key to continue . . .
Run Code Online (Sandbox Code Playgroud)


Sea*_*n B 28

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

var residences = (from d in details from a in d.AppForm_Residences select a).ToList();
Run Code Online (Sandbox Code Playgroud)