どうも、ちょげ(@chogetarou)です。
リスト(list)のforeachループでインデックス(index)を取得する方法を紹介します。
方法

リスト(List)のforeachループでインデックス(index)を取得するには、Select()を使います。
まず、System.Linqを呼び出します。
using System.Linq;
次に、foreachの変数を「(値、インデックス)」のタプルにします。
foreachのinの後で、リストからSelect()を呼び出します。
そして、Select()の引数に、2つの引数をそのまま返すラムダ式を指定します。
foreach (var (value, index) in myList.Select((value, index) => (value, index)))
{
/* ループ処理 */
}
上記のforeachループは、ループ変数でリスト(List)の値とインデックスを取得できます。
もし、変数を1つだけにする場合は、変数のプロパティでリストの値とインデックスを取得します。
foreach (var item in myList.Select((value, index) => (value, index)))
{
/*
ループ処理
item.valueでリストの値を取得
item.indexでリストのインデックスを取得
*/
}
使用例
using System;
using System.Collections.Generic;
using System.Linq;
public class Example
{
public static void Main()
{
List<string> myList = new List<string>() { "a", "b", "c", "d", "e" };
foreach (var (value, index) in myList.Select((value, index) => (value, index)))
{
Console.WriteLine("{0}:{1}", index, value);
}
}
}
/*
出力:
0:a
1:b
2:c
3:d
4:e
*/
コメント