foreach ループをインデックス付きでまわす
using System; using System.Collections.Generic; using System.Linq; class Program { static IEnumerable<string> Three() { yield return "one"; yield return "two"; yield return "three"; } static void Main() { var xs = new[] { 4, 23, 9, -12 }; foreach (var e in xs.Select((v, i) => new { i, v })) { Console.WriteLine("index:{0} value:{1}", e.i, e.v); } Console.WriteLine("---"); foreach (var e in Three().Select((v, i) => new { i, v })) { Console.WriteLine("index:{0} value:{1}", e.i, e.v); } } }
実行結果です。
index:0 value:4 index:1 value:23 index:2 value:9 index:3 value:-12 --- index:0 value:one index:1 value:two index:2 value:three