Список в списках в списках - PullRequest
1 голос
/ 31 марта 2012

У меня есть список стран, и в каждой стране есть список городов, в котором, в свою очередь, есть список улиц. И на улице есть несколько домов. Списки в списках внутри списков. Очень просто.

Мне нужно составить список домов, расположенных в странах, названия которых начинаются с буквы «А». Не очень логичный пример, но это легче объяснить, чем более сложная структура, с которой я имею дело.

Это, конечно, не слишком сложно и может быть сделано путем создания списка, а затем ForEaching всех стран. Где (Name.StartsWith ('A')), затем ForEaching всех городов и, наконец, добавления каждой улицы в этом городе. к списку.

Мне не нравится этот метод, поэтому я хочу что-то красивее ...

Можно ли это сделать, используя что-то вроде Aggregate в списке стран. Где ()? Если так, то как? (Таким образом, в одном утверждении.)

Да, выбор будет только в верхнем списке, так что это должно облегчить его.

1 Ответ

2 голосов
/ 31 марта 2012

Это похоже на задание для Enumerable.SelectMany (которое позволяет разгруппировать один уровень иерархии):

List<County> countyList = GetCounties();

IEnumerable<County> aCounties = countyList
  .Where(c => c.Name.StartsWith("A"));

List<House> aCountyHouses = aCounties
  .SelectMany(c => c.Towns)
  .SelectMany(t => t.Streets)
  .SelectMany(s => s.Houses)
  .ToList();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...