こんなのもあると便利。
public static IEnumerable<T> Pipe<T>(this IEnumerable<T> src, Action<T> act) {
 foreach (var s in src) {
  act(s);
  yield return s;
 }
}