Effets secondaires de LINQ

est-il possible de remplacer une boucle foreach par une expression lambda dans LINQ ( .Select) )?

 List l = {1, 2, 3, 4, 5}; foreach (int i in l) Console.WriteLine(i); 

À:

 List l = {1, 2, 3, 4, 5}; l.Select(/* print to console */); 

Il n’existe pas d’équivalent Linq de foreach, bien qu’il soit assez facile d’en implémenter un vous-même.

Eric Lippert explique bien pourquoi cela n’a pas été implémenté dans Linq même.

Toutefois, si votre collection est une liste (ce qui semble être le cas dans votre exemple), vous pouvez utiliser List.ForEach :

 myList.ForEach(item => Console.WriteLine(item)); 

Pour tout IEnumerable , vous pouvez faire:

 items.Any(item => { Console.WriteLine(item); return false; } 

Mais ce serait totalement faux! C’est comme utiliser une chaussure pour enfoncer le clou. Sémantiquement, cela n’a aucun sens.

Utilisez List.ForEach à la place.

Vous pouvez utiliser la méthode List.ForEach .

 l.ForEach(i => Console.WriteLine(i)); 

List.ForEach utilise le délégué d’action. Désormais ce sera le bon choix.