2010-10-17 14 views
38

szukam sposób zmienić następujący kod:Wielu linia foreach pętli w LINQ/lambda

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

chciałbym zmienić to przy użyciu LINQ/lambda w coś podobnego do:

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

To jednak nie działa. Czy istnieje sposób, aby zrobić wieloliniowy wiersz na foreach inny niż pisząc funkcję, aby to zrobić w jednym wierszu?

Odpowiedz

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

To nie ma nic wspólnego z LINQ per se; to tylko prosta anonimowa metoda napisana w składni lambda przekazana do funkcji (która istniała od 2.0, przed LINQ).

+0

Proste, dzięki! – shlomoa

3

LINQ oznacza Language Integrated Query- co oznacza, że ​​jest on przeznaczony do zapytań - czyli wyodrębnianie lub przekształcania sekwencję do nowego zestawu, nie manipulując oryginał.

The ForEach method hangs off List<T> i jest skrótem wygody do foreach; nic specjalnego.

Powiązane problemy