今天看东西的时候看见这么个扩展方法Aggregate(累加器)很是陌生,于是乎查了查,随手记录一下。
直接看一个最简答的版本,其他版本基本没什么区别,需要的时候可看一下

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

这个方法的功能其实是对,可枚举的IEnumerable<TSource>某种数据,从前两个遍历对象开始逐个,作为输入进行自定
义的操作,这个方法还是蛮有用的,看几个例子。

private void button7_Click(object sender, EventArgs e){string sentence = "the quick brown fox jumps over the lazy dog";string[] words = sentence.Split(' ');Func<string, string, string> temp = test;string reversed = words.Aggregate("",temp);//string reversed=words.Aggregate((workingSentence, next) =>next + " " + workingSentence);MessageBox.Show(reversed);}public string test(string para1, string para2){return para2 + " " + para1;}

  这里我没用msdn直接提供的lambda方式,目的就是为了方便调试查看下。先给出结果吧dog lazy the over jumps fox brown quick the

其执行过程是这样滴,第一次 para1 为the ,para2为 quick,返回了 quick the, 并且作为下次的 para1,para2 为brown ,如此依次的遍历执行下去,直至结束。

  再给一个例子可以看出许多应用。计算数据中的整数的个数

private void button8_Click(object sender, EventArgs e){int[] ints = { 4, 8, 8, 3, 9, 0, 7, 8, 2 };int numEven = ints.Aggregate(0, (total, next) =>next % 2 == 0 ? total + 1 : total);MessageBox.Show("The number of even integers is: " + numEven);}

  恩恩,这都是msdn直接给出的例子,那么很多类似的统计或者计算累的需求是不是就可以考虑下Aggregate了。

转载于:https://www.cnblogs.com/superCow/p/3804134.html

Aggregate累加器相关推荐

  1. C# Aggregate 累加器

    C# Aggregate 累加器 1.需求 累加器是什么?累加器怎么用?别急,一项新技术的诞生,基本都是为了满足某种需求,从需求出发,更容易理解这个函数的特点. 为方便理解,假设有一个int一维数组, ...

  2. 累加器配上委托也可以很吊

    我们知道在ASP.NET MVC中,在Action方法上应用ActionFilter过滤法时,它的执行流程如下图: 这个功能看起来很一般麽,可是实现功能的代码吊炸天(嘿嘿,要班门弄斧了,大神绕行吧!) ...

  3. C# 中奇妙的函数–6. 五个序列聚合运算(Sum, Average, Min, Max,Aggregate)

    今天,我们将着眼于五个用于序列的聚合运算.很多时候当我们在对序列进行操作时,我们想要做基于这些序列执行某种汇总然后,计算结果. Enumerable 静态类的LINQ扩展方法可以做到这一点 .就像之前 ...

  4. C#中五个序列聚合运算(Sum, Average, Min, Max,Aggregate)

    有一段时间不写博文了,是自己不学习了么,怪不得感觉自己寂寞空虚冷了呢... 今天看了一篇文章,心想还有这么简便的方法,呵呵,以后不用再foreach了,又可以偷懒了.... Enumerable 静态 ...

  5. C# Linq源码解析之Aggregate

    前言 在Dotnet开发过程中,Aggregate作为IEnumerable的扩展方法,十分常用.本文对Aggregate方法的关键源码进行简要分析,以方便大家日后更好的使用该方法. 使用 Aggre ...

  6. spark 获取广播变量_Spark流式程序中广播变量和累加器为何使用单例模式

    Spark中广播变量详解以及如何动态更新广播变量​mp.weixin.qq.com 1.广播变量是只读的,使用单例模式可以减少Spark流式程序中每次job生成执行,频繁创建广播变量带来的开销 2. ...

  7. 合并模拟器和真机的静态库动态库aggregate

    创建Aggregate的target 在Build Phases 添加Run Script,内容为 scriptFile=${SRCROOT}/universalA.sh sh ${scriptFil ...

  8. 计算机累加器有加法器功能吗,累加器-累加器ACC的作用

    ACC累加器 B用于辅助累加器做某些运算的寄存器 PSW程序状态字其中最高位是进/借位标志C:PSW.6是辅助进位标志AC,用于标识加减运算中低四位向高四位的进位:PSW.4和PSW.3是寄存器组选择 ...

  9. Oracle 聚合函数(Aggregate Functions)说明

    Oracle Aggregate Functions用过很多,官网的说明如下: Aggregate Functions http://docs.oracle.com/cd/E11882_01/serv ...

最新文章

  1. Linux系统之路——如何在CentOS7.2安装MySQL
  2. 用 FileZilla 连接 Amazon 的aws的主机
  3. python比较两个数的和_Python中的is和==比较两个对象的两种方法
  4. Problem C: 结构体---点坐标结构体
  5. MySQL 基本应用 count() 与 group by
  6. MySQL数据库基础(mysql数据类型、数据表的操作)
  7. 当代年轻人怪现象:体检前万分紧张,体检后熬夜如常
  8. Windows下 Anaconda + VScode Python 环境搭建 多图 非常详细
  9. C#获取cpu序列号 硬盘ID 网卡硬地址以及操作注册表 .
  10. 基于matlab的2ASK调制解调仿真
  11. c语言题目详解——打印3的倍数的数
  12. python网页登录模板
  13. airpods有一只耳机冒红光_AirPods单只耳机连接不上、充不上电、闪灯等问题解决方式...
  14. B360主板i5 8400装Win7记录
  15. 如何做番茄炖牛腩——hadoop理解
  16. java mybatis的SpringBoot博客论坛管理系统
  17. 基于asp.net816mvc汽车维修保养年检管理系统三层架构
  18. 【图像压缩】DCT图像压缩(压缩率可调)【含GUI Matlab源码 1049期】
  19. 关于eclipse中没有js代码提示的解决
  20. 新概念1 课文和单词(2022/12/23)

热门文章

  1. linux apache两种工作模式详解
  2. Castle IOC容器与Spring.NET配置之比较
  3. vue-cli教程(一)
  4. 鸟哥Linux私房菜知识点总结3到5章
  5. 某种密码(password.*)
  6. Educational Codeforces Round 11A. Co-prime Array 数学
  7. HDU 4321 Contest 3
  8. Deep Learning基础理论--Classification RBM
  9. hibernate 高级映射 --张国亮总结第一季
  10. 编译器对私有字段初始化的优化