[C#][Tips][LINQ] 集計(最大,最小,平均,合計,要素数,アキュムレータ)


 //**********************************************
/// 
/// [LIST] 集計(最大,最小,平均,合計,要素数,アキュムレータ)
/// 
//**********************************************
public static void mAggregation()
{
    var ilList = new<int> List() { 11, 2, 23, 44, 29 };

    /* 最大 */
    Console.WriteLine(ilList.Max());

    /* 最小 */
    Console.WriteLine(ilList.Min());

    /* 平均 */
    Console.WriteLine(ilList.Average());
    
    /* 合計 */
    Console.WriteLine(ilList.Sum());
    
    /* 要素数 */
    Console.WriteLine(ilList.Count());

    /* アキュムレータ(最大) */
    /* アキュムレータ(累積器)関数で処理した結果(関数:Math.Max(now, next)) */
    // now:処理結果
    // next:配列を順に設定
    Console.WriteLine(ilList.Aggregate((now, next) => Math.Max(now, next)));

    /* 参考URL */
    //http://ameblo.jp/ns-programming-memo/entry-11064901160.html
    // http://d.hatena.ne.jp/gsf_zero1/20101005/p1
    // http://chomado.com/programming/c-sharp/c-aggregate%E3%82%92%E4%BD%BF%E3%81%86linq

    ilList = new <int> List() { 2, 3, 4, 5, 6 };
    Console.WriteLine(ilList.Aggregate((sum, i) => sum + i));
    // sum     , i  => sum , i 
    // (init) 0 , 2  =>  0  + 2 =  2 (=sum)
    //2 , 3  =>  2  + 3 =  5 (=sum)   
    //5 , 4  =>  5  + 4 =  9 (=sum)
    //9 , 5  =>  9  + 5 = 14 (=sum)
    //       14 , 6  => 14  + 6 = 20 (=sum)

    ilList = new <int>List() { 2, 3, 4, 5, 6 };
    Console.WriteLine(ilList.Aggregate(10,(sum, i) => sum + i));
    // sum     , i  => sum , i 
    // (init)10 , 2  => 10  + 2 = 12 (=sum)
    //       12 , 3  => 12  + 3 = 15 (=sum)   
    //       15 , 4  => 15  + 4 = 19 (=sum)
    //       19 , 5  => 19  + 5 = 24 (=sum)
    //       24 , 6  => 24  + 6 = 30 (=sum)

}