LINQ Aggregate Demystified: A Step-by-Step Guide
LINQ の Aggregate 関数は、混乱の原因となることがよくあります。この記事では、Aggregate の内部の仕組みを詳しく掘り下げ、実際の例を使用して明確かつ簡潔に説明します。
Aggregate について
Aggregate は次の操作です。一連の要素を反復処理し、指定された関数 (ラムダ式) を各要素と以前に蓄積された結果に適用します。基本的に、要素に対して連続した操作を実行し、中間結果を前方に転送します。
例 1: 数値の合計
数値のリストを合計する簡単な例から始めましょう。 :
var nums = new[] { 1, 2, 3, 4 }; var sum = nums.Aggregate((a, b) => a + b); Console.WriteLine(sum); // Output: 10
この例では、Aggregate 関数は最初の要素で結果を初期化します。 (1)。次に、ラムダ式 (a b) を現在の結果 (1) と次の要素 (2) に適用し、結果は 3 になります。このプロセスは継続して、各要素を前の結果に追加します。
例2: 文字列から CSV を作成する
集計は文字列操作にも使用できます。文字の配列からカンマ区切りの文字列を作成する方法は次のとおりです。
var chars = new[] { "a", "b", "c", "d" }; var csv = chars.Aggregate((a, b) => a + "," + b); Console.WriteLine(csv); // Output: a,b,c,d
例 3: シードを使用した数値の乗算
Aggregate は、次のオーバーロードをサポートしています。計算を開始するために初期シード値を受け取ります。次の例を考えてみましょう:
var multipliers = new[] { 10, 20, 30, 40 }; var multiplied = multipliers.Aggregate(5, (a, b) => a * b); Console.WriteLine(multiplied); // Output: 1200000
この場合、集計演算はシード値 (5) から始まり、乗算ラムダ式 (a * b) を適用します。シーケンスの各要素に前の結果が乗算されて繰り越され、最終結果 1200000 が生成されます。
以上がLINQ の集計関数はどのように機能するか: 段階的な説明?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。