Подтвердить что ты не робот

Многострочный цикл foreach в linq/lambda

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

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);

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

4b9b3361

Ответ 1

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

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

Ответ 2

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

Метод ForEach отключается List<T> и является удобной комбинацией для foreach; ничего особенного.