Страницы

Поиск по вопросам

среда, 17 октября 2018 г.

С# Как без костылей последовательно перебрать несколько List

Ребят подскажите как на C# без кучи циклов перебрать несколько List'ов? К примеру есть 3 массива.
List list1 = new List() {"1","2","3"}; List list2 = new List() {"4","5"}; List list3 = new List() {"6",};``
Как за один цикл перебрать их по очереди ?


Ответ

Если по-простому, то:
foreach (var item in list1.Concat(list2).Concat(list3)) { ... }
Если надо соединять произвольное количество списков, можно написать универсальную функцию:
public static IEnumerable ConcatAll( this IEnumerable root, params IEnumerable[] streams) { IEnumerable result = root; foreach (var stream in streams) { result = result.Concat(stream); } return result; }
Использование:
foreach (var item in list1.ConcatAll(list2, list3)) { ... }

Комментариев нет:

Отправить комментарий