2010-10-17 3 views
38

Я ищу способ изменить следующий код:Многоканальный цикл Еогеасп в Linq/лямбда

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

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

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

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

ответ

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

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

+0

Простой, спасибо! – shlomoa

3

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

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