Страницы

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

четверг, 12 декабря 2019 г.

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

#c_sharp #list #foreach


Ребят подскажите как на C# без кучи циклов перебрать несколько List'ов? К примеру
есть 3 массива.

List list1 = new List() {"1","2","3"};
List list2 = new List() {"4","5"};
List list3 = new List() {"6",};``


Как за один цикл перебрать их по очереди ?
    


Ответы

Ответ 1



Если по-простому, то: 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)) { ... }

Ответ 2



С помощью Linq это делается так: foreach (var item in new [] { list1, list2, list3 }.SelectMany(list => list)) { // ... }

Ответ 3



Можно сделать в двух циклах, как, например using System; using System.Collections.Generic; public class Test { public static void Main() { List list1 = new List() {"1","2","3"}; List list2 = new List() {"4","5"}; List list3 = new List() {"6",}; foreach ( List list in new List[] { list1, list2, list3 } ) { foreach ( string s in list ) Console.Write( s ); } } } Вывод на консоль 123456

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

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