Многострочный цикл foreach в linq / lambda - PullRequest
38 голосов
/ 17 октября 2010

Я ищу способ изменить следующий код:

foreach (Contact _contact in contacts)
{
    _contact.ID = 0;
    _contact.GroupID = 0;
    _contact.CompanyID = 0;
}

Я бы хотел изменить это с помощью LINQ / lambda на что-то похожее на:

contacts.ForEach(c => c.ID = 0; c.GroupID = 0; c.CompanyID = 0);

Однако это не работает. Есть ли способ сделать многострочное в foreq linq кроме написания функции, которая делает это в одной строке?

Ответы [ 2 ]

64 голосов
/ 17 октября 2010
contacts.ForEach(c => { c.ID = 0; c.GroupID = 0; c.CompanyID = 0; });

Это не имеет ничего общего с LINQ как таковым;это просто простой анонимный метод, написанный в лямбда-синтаксисе, переданный в функцию List<T>.ForEach (существовавшую с 2.0 до LINQ).

3 голосов
/ 17 октября 2010

LINQ расшифровывается как Language Integrated Query - это означает, что он предназначен для запросов - т.е. извлечения или преобразования последовательности в новый набор, не манипулируя оригиналом.

Метод ForEach зависает List<T> и представляет собой удобный ярлык для foreach; ничего особенного.

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