C # LINQ ForEach que funciona em IEnumerable

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);
}
}
}
}