#c_sharp #list #foreach
Ребят подскажите как на C# без кучи циклов перебрать несколько List'ов? К примеру есть 3 массива. Listlist1 = 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 IEnumerableConcatAll ( 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() { Listlist1 = 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
Комментариев нет:
Отправить комментарий