возможно ли заменить цикл foreach лямбда-выражением в LINQ (.Select))?
foreach
.Select)
List<int> l = {1, 2, 3, 4, 5}; foreach (int i in l) Console.WriteLine(i);
Кому:
List<int> l = {1, 2, 3, 4, 5}; l.Select(/* print to console */);
Не существует Linq-эквивалента foreach, хотя его довольно легко реализовать самостоятельно.
Эрик Липперт дает хорошее описание здесь того, почему это не было реализовано в самом Linq.
Однако, если ваша коллекция представляет собой список (который, как представляется, в вашем примере), вы можете использовать List.ForEach :
myList.ForEach(item => Console.WriteLine(item));
Для любого IEnumerable вы можете сделать:
IEnumerable
items.Any(item => { Console.WriteLine(item); return false; }
Но это было бы совершенно неправильно! Это похоже на использование обуви, чтобы забить гвоздь. Семантически это не имеет смысла.
Вы можете использовать метод List<T>.ForEach.
List<T>.ForEach
l.ForEach(i => Console.WriteLine(i));
Используйте List.ForEach вместо.
List.ForEach использует делегат действия.Отныне это будет правильным выбором.