旅行好きなソフトエンジニアの備忘録

プログラミングや技術関連のメモを始めました

【C#】ソート時のインデックスが欲しい

C#でソートを行い、ソートした時のインデックスも欲しい時に以下で取得できることが分かったのでメモします。

var list = new List<int>() { 3, 2, 1 };
var sorted = list.Select((x, i) => new KeyValuePair<int,int>(x, i))
                                   .OrderBy(x => x.Key);
foreach (KeyValuePair<int,int> kv in sorted)
{
    // Keyにソートされた値、Valueに元のインデックスが入ります
    Console.WriteLine(kv.Key + " " + kv.Value);
}

stackoverflow.com