2010-10-17 10 views
38

Je cherche un moyen de changer le code suivant:boucle foreach multi-ligne LINQ/lambda

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

Je voudrais changer cela en utilisant LINQ/lambda en quelque chose de similaire à:

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

Cependant, cela ne fonctionne pas. Y at-il un moyen de faire plusieurs lignes dans un linq foreach autre que d'écrire une fonction pour faire cela en une ligne?

Répondre

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

Cela n'a rien à voir avec LINQ en soi; c'est juste une simple méthode anonyme écrite en syntaxe lambda passée à la fonction (qui existait depuis 2.0, avant LINQ).

+0

Simple, merci! – shlomoa

3

LINQ est synonyme de langage intégré Query - ce qui signifie qu'il est destiné à interroger - à savoir l'extraction ou la transformation d'une séquence dans un nouvel ensemble, et non pas la manipulation de l'original.

Le ForEach method hangs off List<T> est un raccourci pratique pour foreach; rien de spécial.