次の例でLINQに切り替えるのに苦労しています。
int[] inputs = { 5, 3, 5, 66, 4, 5 };
int[] indexes; // I want to have the indexes of '5's in
// the inputs array, which is { 0, 2, 5 }
// My way (traditional for loop)
List<int> indexesList = new List<int>();
for (int i = 0; i < inputs.Length; i++)
if (inputs[i] == 5)
indexesList.Add(i);
indexes = indexesList.ToArray();
// LINQ way
var indexes = inputs.Select((s, i) => new { i, s })
.Where(t => t.s == 5)
.Select(t => t.i).ToArray();
質問1.効率(速度、メモリ使用量)の観点から、コードをLINQに変換すると、何か利点がありますか?
質問2.本当の場合、LINQでそれを行うためのよりエレガントな方法はありますか?
PS:このメソッドは、私の実際のプロジェクトでは非常に頻繁に呼び出されることに注意してください。したがって、速度やメモリ使用量を少し改善すると、プロセス全体が大幅に向上します。