foreachでループ回数を取得する方法です。
IEnumerable.Select()には、引数を2つ取るデリゲートを渡すことができます。
この2つ目の引数がループカウンターです。
具体的には以下のようなソースになります。
static void Test(){
LinkedList<string> name = new LinkedList<string>();
name.AddLast("Carrot");
name.AddLast("Sandal");
name.AddLast("Yacht");
name.AddLast("Sesame");
name.AddLast("Rocket");
name.AddLast("Turkey");
name.AddLast("Bee");
name.AddLast("Whale");
name.AddLast("Juice");
name.AddLast("Strawberry");
foreach(var item in name.Select((n, i) => new{name = n, index = i})) {
Console.WriteLine(string.Format("{0}:{1}", item.index + 1, item.name));
}
}
<実行結果>
1:Carrot
2:Sandal
3:Yacht
4:Sesame
5:Rocket
6:Turkey
7:Bee
8:Whale
9:Juice
10:Strawberry
Listや配列型ならforでまわしてdata[i]の形式で取得すればいいですが、
LinkedListのようなランダムアクセスできない型だと便利だと思います。
#LINQ構文でrow_num相当のものがありそうだと思ったんだけど、ないなぁ~