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 = { , , , , , , , ,  };
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 = { , , , , , , , ,  }; var query = numbers.Aggregate(, (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);
												

最新文章

  1. 实例操作JSONP原理
  2. python2不同版本安装json模块
  3. code of C/C++(3) - 从 《Accelerated C++》源码学习句柄类
  4. gif显示
  5. jquery插件写法
  6. border:0; VS border:none;
  7. wamp安装完更改关联浏览器
  8. PHP IP互换数字[转]
  9. Xcode常见报错及解决办法
  10. Boost使用笔记(Smart_ptr)
  11. cache 的设计与实现--转载
  12. Mac设置
  13. Qt中的串口编程之三
  14. 移动端,input输入框被手机输入法解决方案
  15. 关于配置ssh免密码登录后,仍提示输入密码
  16. linux 命令 — grep
  17. “百度杯”CTF比赛 九月场---123
  18. redis 安装配置学习笔记
  19. JS页面跳转代码怎么写?总结了5种方法
  20. 下载安装Android sdk tools

热门文章

  1. logstash date插件
  2. xmanager远程登录
  3. fsl的feat软件分包使用笔记
  4. VisualStudio2013Preview对C++11的支持(转载)
  5. Java---XML的解析(1)-DOM解析
  6. (转)Python:self
  7. POJ 3186Treats for the Cows (区间DP)
  8. C#如何将线程中的代码抛到主线程去执行
  9. Java 性能优化技巧及实战
  10. Android应用开发学习之列表视图