Список списков Linq для одного списка

Похоже, это та вещь, на которую уже был дан ответ, но я не могу ее найти.

Мой вопрос довольно прост, как я могу сделать это в одном утверждении, чтобы вместо того, чтобы новый пустым списком, а затем агрегировать в следующей строке, я могу иметь один оператор linq, который выводит мой окончательный список. подробности - это список элементов, каждый из которых содержит список резиденций, я просто хочу, чтобы все жилые помещения были в плоском списке.

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

Ответ 1

Вы хотите использовать метод расширения SelectMany.

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

Ответ 2

Используйте SelectMany

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

Ответ 3

Для вас есть пример кода:

    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);
    }

И выход будет:

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

Ответ 4

И для тех, кто хочет синтаксис выражения запроса: вы используете два оператора из

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