Duplicar posible:
métodos de extensión
LINQ equivalent of foreach for IEnumerable<T>Método de extensión LINQ existente similar a Parallel.For?
El LINQ para IEnumerable son muy útiles ... pero no es tan útil si lo que quieres hacer es aplicar algún cálculo para cada elemento de la enumeración sin devolver nada. Así que me preguntaba si quizás me estaba perdiendo el método correcto, o si realmente no existe, ya que prefiero usar una versión incorporada si está disponible ... pero no he encontrado una :-)
Podría haber jurado que había un método .ForEach en alguna parte, pero aún no lo he encontrado. Mientras tanto, he escrito mi propia versión en caso de que sea útil para cualquier otra persona:
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);
}
}
}
uso es:
myEnumerable.For<MyClass>(delegate(MyClass item) { item.Count++; });
cf respuesta de Eric Lippert aquí: http://blogs.msdn.com/ericlippert/archive/2009 /05/18/foreach-vs-foreach.aspx – Benjol