Итерация через список списков?

Некоторые другие вещи иметь в виду:

  • При использовании ASP.NET Вы не имеете полного контроля над идентификатором элементов, таким образом, в значительной степени необходимо использовать класс (обратите внимание, что это менее верно, чем это однажды было).
  • Лучше использовать никакой , когда можно помочь ему. Вместо этого определите тип элемента, и это тип родителя. Например, незаказанный список содержавшее внутреннее отделение с navarea классом мог быть выбран этот путь:

    div.NavArea ul { /* styles go here */ }
    

Теперь можно разработать логическое подразделение для большой части всех navarea с одним приложением класса.

9
задан Dario 20 November 2009 в 17:09
поделиться

4 ответа

Ну, вы можете использовать функцию linq SelectMany для плоской карты (создать дочерние списки и сжать их в один) значения:

foreach(var i in BunchOfItems.SelectMany(k => k.Items)) {}
16
ответ дан 4 December 2019 в 08:52
поделиться

Вы можете использовать SelectMany :

foreach(IItem i in BunchOffItems.SelectMany(s => s.Items)){
    // do something with i
}
5
ответ дан 4 December 2019 в 08:52
поделиться
    //Used to flatten hierarchical lists
    public static IEnumerable<T> Flatten<T>(this IEnumerable<T> items, Func<T, IEnumerable<T>> childSelector)
    {
        if (items == null) return Enumerable.Empty<T>();
        return items.Concat(items.SelectMany(i => childSelector(i).Flatten(childSelector)));
    }

Я думаю, это сработает для того, что вы хотите сделать. Ура.

0
ответ дан 4 December 2019 в 08:52
поделиться

Вы можете создать функцию, которая сделает это за вас.

Enumerable<T> magic(List<List<T>> lists) {
  foreach (List<T> list in lists) {
     foreach (T item in list) {
       yield return item;
     }
  }
}

Тогда просто сделайте:

List<List<int>> integers = ...;
foreach (int i in magic(integers)) {
  ...
}

Кроме того, я думаю, что PowerCollections найдет что-нибудь для этого из коробка.

3
ответ дан 4 December 2019 в 08:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: