本文记录下Enumerable集合的Aggregate扩展方法的三个重载

  • 如下三个重载函数
    • 1.带一个func参数的:从集合的第二项开始,依次往后往第一个值上聚合(不会修改集合第一项,相当于seed是第一项),集合count = n,循环n - 1次,返回聚合结果;
    • 2.带一个seed和一个func参数的:从集合的第一项开始,依次往后往seed上聚合,集合count = n,循环n次,返回聚合结果;
    • 3.带一个seed和两个func参数的:从集合的第一项开始,依次往后往seed上聚合,集合count = n,循环n次,拿到聚合结果后,最后一个func参数对聚合结果进行二次处理,然后返回聚合结果;
    • 话不多说,代码如下:
    • 运行结果如下:

如下三个重载函数

1.带一个func参数的:从集合的第二项开始,依次往后往第一个值上聚合(不会修改集合第一项,相当于seed是第一项),集合count = n,循环n - 1次,返回聚合结果;

2.带一个seed和一个func参数的:从集合的第一项开始,依次往后往seed上聚合,集合count = n,循环n次,返回聚合结果;

3.带一个seed和两个func参数的:从集合的第一项开始,依次往后往seed上聚合,集合count = n,循环n次,拿到聚合结果后,最后一个func参数对聚合结果进行二次处理,然后返回聚合结果;

话不多说,代码如下:

public static void TestIEnumerableAggregate(){/** Aggregate两个重载:* 1.带一个func参数的:从集合的第二项开始,依次往后往第一个值上聚合(不会修改集合第一项,相当于seed是第一项),集合count = n,循环n - 1次,返回聚合结果;* 2.带一个seed和一个func参数的:从集合的第一项开始,依次往后往seed上聚合,集合count = n,循环n次,返回聚合结果;* 3.带一个seed和两个func参数的:从集合的第一项开始,依次往后往seed上聚合,集合count = n,循环n次,拿到聚合结果后,最后一个func参数对聚合结果进行二次处理,然后返回聚合结果;*///打印Console.WriteLine("该方式测试“Aggregate三个重载:”");//打印Console.WriteLine();//初始化var numbers = new List<int>() { 2, 4, 6, 8, 10 };//打印Console.WriteLine("1.带一个func参数的:从集合的第二项开始,依次往后往第一个值上聚合(不会修改集合第一项,相当于seed是第一项),集合count = n,循环n - 1次,返回聚合结果;");//序号int index = 0, index2 = 0;//聚合var totalResult = numbers.Aggregate((total, value) =>{//打印Console.WriteLine($"Aggregate - {++index}:total = {total},value = {value}");//返回return total + value;});//打印Console.WriteLine($"执行完毕,{nameof(totalResult)} = {totalResult}");//打印Console.WriteLine();//打印Console.WriteLine("2.带一个seed和一个func参数的:从集合的第一项开始,依次往后往seed上聚合,集合count = n,循环n次,返回聚合结果;");//序号index = 0;//聚合totalResult = numbers.Aggregate(100, (total, value) =>{//打印Console.WriteLine($"Aggregate - {++index}:total = {total},value = {value}");//返回return total + value;});//打印Console.WriteLine($"执行完毕,{nameof(totalResult)} = {totalResult}");//打印Console.WriteLine();//打印Console.WriteLine("3.带一个seed和两个func参数的:从集合的第一项开始,依次往后往seed上聚合,集合count = n,循环n次,拿到聚合结果后,最后一个func参数对聚合结果进行二次处理,然后返回聚合结果;");//序号index = 0;//聚合totalResult = numbers.Aggregate(50, (total, value) =>{//打印Console.WriteLine($"Aggregate - {++index}:total = {total},value = {value}");//返回return total + value;}, r =>{//打印Console.WriteLine($"AggregateSelector - {++index2}:r = {r}");//返回return r * 2;});//打印Console.WriteLine($"执行完毕,{nameof(totalResult)} = {totalResult}");//打印Console.WriteLine();}

运行结果如下:

c#Enumerable集合的Aggregate扩展方法的三个重载相关推荐

  1. aardio名字空间库的扩展方法(三)

    通过前面的操作,我们实现了只要导入spaceB这个扩展库,就可以使用spaceA这个基库的内容,还可以使用我们自己新扩展出来的功能,目标达成.这里面有几个问题需要解释: 一.我们继承基库,采用的是在扩 ...

  2. 【怎样写代码】向现有类型“添加”方法 -- 扩展方法(三):为枚举类型创建方法

    如果喜欢这里的内容,你能够给我最大的帮助就是转发,告诉你的朋友,鼓励他们一起来学习. If you like the content here, you can give me the greates ...

  3. Enumerable 下又有新的扩展方法啦,快来一睹为快吧

    一:背景 1. 讲故事 前段时间将公司的一个项目从 4.5 升级到了 framework 4.8 ,编码的时候发现 Enumerable 中多了三个扩展方法: Append, Prepend, ToH ...

  4. distinct返回null报错_C#之集合常用扩展方法与Linq

    一.集合的常用扩展方法(lambda的方式) 1.Where() 根据条件选择数据 2.Select() 根据数据条件转换成新的数据类型,类似于DTO转换类 3.Max() 根据条件选择最大值 4.M ...

  5. .NET中那些所谓的新语法之二:匿名类、匿名方法与扩展方法

    开篇:在上一篇中,我们了解了自动属性.隐式类型.自动初始化器等所谓的新语法,这一篇我们继续征程,看看匿名类.匿名方法以及常用的扩展方法.虽然,都是很常见的东西,但是未必我们都明白其中蕴含的奥妙.所以, ...

  6. Jumony(一)从扩展方法到流畅的程序体验

    今天让公司的程序员试用了一下还在开发中的代号为"Jumony"的HTML数据绑定引擎,开发人员的一句评价被我视为最高的褒奖. "感觉这个框架就是,你想到什么就写什么.&q ...

  7. 【Groovy】Groovy 扩展方法 ( 实例扩展方法配置 | 扩展方法示例 | 编译实例扩展类 | 打包实例扩展类字节码到 jar 包中 | 测试使用 Thread 实例扩展方法 )

    文章目录 一.扩展方法示例 二.实例扩展方法配置 三.编译实例扩展类 四.打包静态扩展类字节码到 jar 包中 五.测试使用 Thread 实例扩展方法 一.扩展方法示例 为 Thread 扩展 he ...

  8. 【Groovy】Groovy 扩展方法 ( 静态扩展方法配置 | 扩展方法示例 | 编译静态扩展类 | 打包静态扩展类字节码到 jar 包中 | 测试使用 Thread 静态扩展类 )

    文章目录 一.扩展方法示例 二.静态扩展方法配置 三.编译静态扩展类 四.打包静态扩展类字节码到 jar 包中 五.测试使用 Thread 静态扩展类 一.扩展方法示例 为 Thread 扩展 hel ...

  9. 第八节:语法总结(2)(匿名类、匿名方法、扩展方法)

    一. 匿名类 1. 传统的方式给类赋值,需要先建一个实体类→实例化→赋值,步骤很繁琐,在.Net 3.0时代,微软引入匿名类的概念,简化了代码编写,提高了开发效率.  匿名类的声明语法:  var o ...

最新文章

  1. EduCoder 机器学习 决策树
  2. vue-awesome-swiper 的使用
  3. 增量值编码器、单圈绝对值编码器、多圈绝对值编码器
  4. ssl1213-多边形面积【差积,计算几何】
  5. 服务器生成文件怎么配置路径,npm run build生成的文件如何部署到服务器上
  6. Angular 学习笔记——拖拽
  7. 两年前,梦开始的地方.
  8. 基于IDEA的Spring源码调试
  9. HMI报表设计与打印,标签、账单、支票、条码数据打印与出版VC++源码解决方案2018!
  10. kali2020 中文乱码问题
  11. 企业微信有网页版登录吗?
  12. 数据归档,冷热数据分离
  13. R包的安装以及安装失败的解决
  14. 新闻与Android相关的话题,热门话题 - 换个角度看新闻 #iOS #Android
  15. 黑苹果 MacOS 10.15 Catalina 安装详细教程带工具资料
  16. 普陀区科技创新型小巨人企业
  17. linux中文显示乱码情况解决
  18. CEP的一个简单理解
  19. 摩托车闪光控制器专用芯片MST1172
  20. Navicat Premium的使用

热门文章

  1. POJ 3047 Fibonacci
  2. 时间序列分析——知乎话题讨论(收集)
  3. kafka rebalance故障的处理策略
  4. 膜拜!终于有人把Django的MVT设计模式解释的清清楚楚了!
  5. Upsource的安装和与IDEA产品的配置
  6. html打开浏览器uri,Data URI和MHTML完整解决所有浏览器
  7. MySql数据库之审计(开启log+设置init-connect实现无插件审计)
  8. 微信小程序 渲染层网络错误_详解微信小程序「渲染层网络层错误」的解决方法...
  9. 一步刷出个后台。Vue3+Ts+element-admin-Vite+Pinia
  10. 微型计算机发展的心得感想,-微机-心得体会.doc