Многострочный цикл 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, кроме как написать функцию, чтобы сделать это в одной строке?
Ответы
Ответ 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; ничего особенного.