zoukankan      html  css  js  c++  java
  • Linq扩展方法之Aggregate 对序列应用累加器函数

    Linq扩展方法之Aggregate  对序列应用累加器函数;

    函数模板:// 函数名:对序列应用累加器函数。
    // Parameters:参数要求
    // source:要聚合的 System.Collections.Generic.IEnumerable`1。
    // func:要对每个元素调用的累加器函数。
    // Type parameters:参数类型
    // TSource:source 中的元素的类型。
    //
    // Returns:累加器的最终值。
    // Exceptions:
    // T:System.ArgumentNullException:
    // source 或 func 为 null。
    // T:System.InvalidOperationException:
    // source 中不包含任何元素。
    public static TSource Aggregate<TSource>(this IEnumerable<TSource> source, Func<TSource, TSource, TSource> func);
    int[] numbers1 = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
    var query1 = numbers1.Aggregate((a, b) => a * b);
    a的依次变更为:
    a=1,a*b=1*2;
    a=2,a*b=2*3;
    a=6,a*b=6*4;
    a=24,a*b=24*5;
    a=120,a*b=120*6=720;................

    // 对序列应用累加器函数。 将指定的种子值用作累加器初始值。

      public static TAccumulate Aggregate<TSource, TAccumulate>(this IEnumerable<TSource> source, TAccumulate seed, Func<TAccumulate, TSource, TAccumulate> func);

    int[] numbers = { 9, 3, 5, 4, 2, 6, 7, 1, 8 }; var query = numbers.Aggregate(5, (a, b) => ((a < b) ? (a * b) : a));
    a的依次变更为:
    a=5,
    ((a < b) ? (a * b) : a)):5*9=45;
    第二次时:a值为45,b 为3;
    第三次此时:a值为45,b 为3;
    。。。。。。。。
    
    

     自定义方法实现

     // Summary:
            //     对序列应用累加器函数。 将指定的种子值用作累加器的初始值,并使用指定的函数选择结果值。
            //
            // Parameters:
            //   source:
            //     要聚合的 System.Collections.Generic.IEnumerable`1。
            //
            //   seed:
            //     累加器的初始值。
            //
            //   func:
            //     要对每个元素调用的累加器函数。
            //
            //   resultSelector:
            //     将累加器的最终值转换为结果值的函数。
            //
            // Type parameters:
            //   TSource:
            //     source 中的元素的类型。
            //
            //   TAccumulate:
            //     累加器值的类型。
            //
            //   TResult:
            //     结果值的类型。
            //
            // Returns:
            //     已转换的累加器最终值。
            //
            // Exceptions:
            //   T:System.ArgumentNullException:
            //     source 或 func 或 resultSelector 为 null。
            public static TResult Aggregate<TSource, TAccumulate, TResult>(this IEnumerable<TSource> source, TAccumulate seed, Func<TAccumulate, TSource, TAccumulate> func, Func<TAccumulate, TResult> resultSelector);
    
    
    
  • 相关阅读:
    1951: [Sdoi2010]古代猪文
    BZOJ 1911: [Apio2010]特别行动队[斜率优化dp]
    BZOJ 2038: [2009国家集训队]小Z的袜子(hose)&&莫队算法
    gdb命令整理
    1833: [ZJOI2010]count 数字计数
    1227: [SDOI2009]虔诚的墓主人
    P3197 [HNOI2008]越狱
    3505: [Cqoi2014]数三角形
    P3414 SAC#1
    3398: [Usaco2009 Feb]Bullcow 牡牛和牝牛
  • 原文地址:https://www.cnblogs.com/zhlziliaoku/p/5467232.html
Copyright © 2011-2022 走看看