38 votes

Boucle foreach multi-ligne en linq / lambda

Je cherche un moyen de changer le code suivant:

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

J'aimerais 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. Existe-t-il un moyen de créer plusieurs lignes dans un environnement linq autrement qu'en écrivant une fonction permettant de le faire en une seule ligne?

65voto

Mehrdad Afshari Points 204872
 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 méthode anonyme simple écrite en syntaxe lambda transmise à la fonction List<T>.ForEach (qui existait depuis la version 2.0, avant LINQ).

3voto

Rex M Points 80372

LINQ signifie Language Integrated Query - ce qui signifie qu'il est destiné à l' interrogation - c'est-à-dire extraire ou transformer une séquence en un nouvel ensemble, sans manipuler l'original.

La méthode ForEach décolle de List<T> et constitue un raccourci de commodité pour foreach; rien de spécial.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X