Infelizmente, o BCL não fornece um ForEach que funcione para IEnumerable. Isso significa que a solução atual é invocar ToList () no IEnumerable antes de executar ForEach na lista. Isso é caro em computação [O (x)] e memória (temp alocado para a lista, então em algum ponto você alocou memória O (x) também).
Aqui está um arquivo que sempre incluo em meus projetos:
https://gist.github.com/3810761
E para os preguiçosos:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace System.Linq
{
public static class IEnumerableExtensionForEach
{
public static void ForEach<T>(this IEnumerable<T> list, Action<T> block) {
foreach (var item in list) {
block(item);
}
}
}
}