LINQ побочные эффекты - PullRequest
       4

LINQ побочные эффекты

9 голосов
/ 12 апреля 2011

возможно ли заменить цикл foreach лямбда-выражением в LINQ (.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 */);

Ответы [ 5 ]

12 голосов
/ 12 апреля 2011

Не существует Linq-эквивалента foreach, хотя его довольно легко реализовать самостоятельно.

Эрик Липперт дает хорошее описание здесь того, почему это не было реализовано в самом Linq.

Однако, если ваша коллекция представляет собой список (который, как представляется, в вашем примере), вы можете использовать List.ForEach :

myList.ForEach(item => Console.WriteLine(item));
4 голосов
/ 12 апреля 2011

Для любого IEnumerable вы можете сделать:

items.Any(item =>
{
    Console.WriteLine(item);
    return false;
}

Но это было бы совершенно неправильно! Это похоже на использование обуви, чтобы забить гвоздь. Семантически это не имеет смысла.

2 голосов
/ 12 апреля 2011

Вы можете использовать метод List<T>.ForEach.

l.ForEach(i => Console.WriteLine(i));
2 голосов
/ 12 апреля 2011

Используйте List.ForEach вместо.

1 голос
/ 12 апреля 2011

List.ForEach использует делегат действия.Отныне это будет правильным выбором.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...