>>173
C# 4.0 だと
public static IEnumerable<dynamic> WithIndex<TSource>(this IEnumerable<TSource> enumerable)
{
  int index = 0;
  foreach (TSource item in enumerable)
  {
    yield return new { Index = index, Item = item };
    index++;
  }
}
みたいなことができるっぽい。

今の段階だと dynamic の部分で適当にクラスを作成するしかないかな?
何かうまい抜け道がある気がするんだが。