JetBrains Rider 2026.1 Help

コードインスペクション: ループは LINQ 式に変換できます

JetBrains Rider が for ループで IEnumerable を反復処理していると判断した場合、このループを LINQ 式に変換する提案をすることがあります。 例: 次のコード:

int c = 1; for (int i = 0; i < numbers.Length; ++i) c *= numbers[i];

自動的に

int c = numbers.Aggregate(1, (current, t) => current*t);

JetBrains Rider は通常、ループ内で定義されている処理を表現できる LINQ 演算子を見分けるほど賢いです。 例えば、上記のループに c += numbers[i] が含まれている場合、JetBrains Rider はその式を numbers.Sum() まで単純化します。

しかし、このアプローチの利点は何ですか? 1 つは、反復変数に関連する記録管理を行う必要がないことです(例外は、反復変数が本当に必要な場合です)。 ひとつは、繰り返し変数に関する記録管理を行う必要がないことです(ただし、本当に繰り返し変数が必要な場合は例外です)。 さらに、 LINQ 固有の利点もすべて利用できます。たとえば、コレクション名の直後に .AsParallel() メソッド呼び出しを追加するだけで、並列化を指定できます。 これにより、PLINQ(Parallel LINQ)を使用するようランタイムに指示し、計算を高速化できます。

2026 年 6 月 12 日