C#
【C#】LINQを使用して要素のindexを取得する方法

C#のLINQで便利な小技の一つに要素のインデックスを取得する方法があります。忘れがちなので、覚えておいて損はありません。コレクションの各要素のインデックスを取得するには、Select句を使うことで可能となります。
var list = new List<int>()
{
1, 2, 3, 4, 5,
};
//Tupleを生成
var indexList = list
.Select((item, index) => (item, index))
.ToList();
indexList.ForEach(tpl =>
{
Console.WriteLine($"index={ tpl.index } : { tpl.item.ToString() }");
//index=0 : 1
//index=1 : 2
//index=2 : 3
//index=3 : 4
//index=4 : 5
});
上記のサンプルからも分かる通り、C#のLINQにおけるSelect句は、第二引数が要素のインデックスとして渡されます。この特性が意外と忘れがちですが、現場ではよく重宝しますので覚えておきましょう。なおインデックス値なので番号は「0」スタートであることも忘れないようにしてください。