Possible en double:
LINQ equivalent of foreach for IEnumerable<T>Méthode d'extension LINQ existante similaire à Parallel.For?
Les méthodes d'extension LINQ pour IEnumerable sont très pratiques ... mais pas utile si tout ce que vous voulez faire est d'appliquer un certain calcul à chaque élément l'énumération sans rien retourner. Alors je me demandais si je manquais peut-être la bonne méthode, ou si elle n'existait pas vraiment car j'utiliserais plutôt une version intégrée si elle est disponible ... mais je n'en ai pas trouvé une :-)
J'aurais pu jurer qu'il existait une méthode .ForEach quelque part, mais je ne l'ai pas encore trouvée. En attendant, j'ai écrit ma propre version dans le cas où il est utile pour quelqu'un d'autre:
using System.Collections;
using System.Collections.Generic;
public delegate void Function<T>(T item);
public delegate void Function(object item);
public static class EnumerableExtensions
{
public static void For(this IEnumerable enumerable, Function func)
{
foreach (object item in enumerable)
{
func(item);
}
}
public static void For<T>(this IEnumerable<T> enumerable, Function<T> func)
{
foreach (T item in enumerable)
{
func(item);
}
}
}
utilisation
est:
myEnumerable.For<MyClass>(delegate(MyClass item) { item.Count++; });
cf la réponse de Eric Lippert ici: http://blogs.msdn.com/ericlippert/archive/2009 /05/18/foreach-vs-foreach.aspx – Benjol