Ответ 1
Вы хотите использовать метод расширения SelectMany
.
var residences = details.SelectMany(d => d.AppForm_Residences).ToList();
Похоже, это та вещь, на которую уже был дан ответ, но я не могу ее найти.
Мой вопрос довольно прост, как я могу сделать это в одном утверждении, чтобы вместо того, чтобы новый пустым списком, а затем агрегировать в следующей строке, я могу иметь один оператор linq, который выводит мой окончательный список. подробности - это список элементов, каждый из которых содержит список резиденций, я просто хочу, чтобы все жилые помещения были в плоском списке.
var residences = new List<DAL.AppForm_Residences>();
details.Select(d => d.AppForm_Residences).ToList().ForEach(d => residences.AddRange(d));
Вы хотите использовать метод расширения SelectMany
.
var residences = details.SelectMany(d => d.AppForm_Residences).ToList();
Используйте SelectMany
var all = residences.SelectMany(x => x.AppForm_Residences);
Для вас есть пример кода:
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 . . .
И для тех, кто хочет синтаксис выражения запроса: вы используете два оператора из
var residences = (from d in details from a in d.AppForm_Residences select a).ToList();