Aggregate这个语法可以做一些复杂的聚合运算,例如累计求和,累计求乘积。它接受2个参数,一般第一个参数是称为累积数(默认情况下等于第一个值),而第二个代表了下一个值。第一次计算之后,计算的结果会替换掉第一个参数,继续参与下一次计算。

一、Aggregate用于集合的简单的累加、阶乘

.using System;
.using System.Linq;
.
.class Program
.{
.static void Main()
.{
.int[] array = { , , , , };
.int result = array.Aggregate((a, b) => b + a);
.// 1 + 2 = 3
.// 3 + 3 = 6
.// 6 + 4 = 10
.// 10 + 5 = 15
.Console.WriteLine(result);
.
. result = array.Aggregate((a, b) => b * a);
.// 1 * 2 = 2
.// 2 * 3 = 6
.// 6 * 4 = 24
.// 24 * 5 = 120
.Console.WriteLine(result);
.}
.}

输出结果:

15
120
Aggregate它接受2个参数,一般第一个参数是称为累积数(默认情况下等于第一个值),而第二个代表了下一个值。

二、Aggregate,在字符串中反转单词的排序

.string sentence = "the quick brown fox jumps over the lazy dog";
.string[] words = sentence.Split(' ');
.string reversed = words.Aggregate((workingSentence, next) =>
. next + " " + workingSentence);
.Console.WriteLine(reversed);
输出结果:
dog lazy the over jumps fox brown quick the 

三、使用 Aggregate 应用累加器函数和结果选择器

下例使用linq的Aggregate方法找出数组中大于"banana", 长度最长的字符串,并把它转换大写。
.string[] fruits = { "apple", "mango", "orange", "passionfruit", "grape" };
.string longestName =
. fruits.Aggregate("banana",
.(longest, next) =>
. next.Length > longest.Length ? next : longest,
. fruit => fruit.ToUpper());
.Console.WriteLine(
."The fruit with the longest name is {0}.",
. longestName);
输出结果:
The fruit with the longest name is PASSIONFRUIT. 

四、使用 Aggregate 应用累加器函数和使用种子值

下例使用linq的Aggregate方法统计一个数组中偶数的个数。
.int[] ints = { , , , , , , , ,  };
.
.//统计一个数组中偶数的个数,种子值设置为0,找到偶数就加1
.int numEven = ints.Aggregate(, (total, next) =>
. next % == ? total + : total);
.
.Console.WriteLine("The number of even integers is: {0}", numEven);

输出结果:

The number of even integers is: 6

除此之外LINQ中的Aggregate还可以用于递归调用。

LINQ中的Aggregate用法总结的更多相关文章

  1. Linq 中 Join 的用法

    Linq中连接主要有组连接.内连接.左外连接.交叉连接四种.各个用法如下. 注:本文内容主要来自<Linq实战>,本例中用到的对象请见文章底部. 1. 组连接 组连接是与分组查询是一样的. ...

  2. linq中join的用法

    join方法 public static IEnumerable<TResult> Join<TOuter, TInner, TKey, TResult>( this IEnu ...

  3. Linq中常用语法

    using System;using System.Collections.Generic;using System.ComponentModel.Design;using System.Linq;u ...

  4. Linq中关键字的作用及用法

    Linq中关键字的作用及用法 1.All:确定序列中的所有元素是否都满足条件.如果源序列中的每个元素都通过指定谓词中的测试,或者序列为空,则为 true:否则为 false. Demo: 此示例使用 ...

  5. Linq中join & group join & left join 的用法

    Linq中join & group join & left join 的用法 2013-01-30 11:12 12154人阅读 评论(0) 收藏 举报  分类: C#(14)  文章 ...

  6. 简述Linq中.ToList(), .AsEnumerable(), AsQueryable()的区别和用法

    [TOC] 这3个方法的功能完全不同, 应按照具体业务场景使用. AsQueryable() 先说说什么是 IQueryable IQueryable 是当前的 data provider 返回的类型 ...

  7. Linq中 AsQueryable(), AsEnumerable()和ToList()的区别和用法

    Linq中 AsQueryable(), AsEnumerable()和ToList()的区别和用法:在写LINQ语句的时候,往往会看到AsEnumerable() ,AsQueryable() 和T ...

  8. MVC+Spring.NET+NHibernate .NET SSH框架整合 C# 委托异步 和 async /await 两种实现的异步 如何消除点击按钮时周围出现的白线? Linq中 AsQueryable(), AsEnumerable()和ToList()的区别和用法

    MVC+Spring.NET+NHibernate .NET SSH框架整合   在JAVA中,SSH框架可谓是无人不晓,就和.NET中的MVC框架一样普及.作为一个初学者,可以感受到.NET出了MV ...

  9. LINQ中的连接(join)用法示例

    Linq中连接主要有组连接.内连接.左外连接.交叉连接四种.各个用法如下. 1. 组连接 组连接是与分组查询是一样的.即根据分组得到结果. 如下例,根据publisther分组得到结果. 使用组连接的 ...

随机推荐

  1. 【Sharepoint】CSS与Master Page的开发与部署

    一.CSS的开发与部署相对比较简单,先是要上传CSS文件到样式库中,然后在页面模板中将上传的自定义CSS样式文件设置为所有文件的默认css文件.下面详细的介绍CSS文件的开发与部署过程. 1.编写自定 ...

  2. vs2010打开设计器出现错误

    vs2010打开设计器出现此界面,  错误多种,还有“未将对象引用设置到对象的实例”  ,我项目用到了第三方控件(没有安装,bin文件夹导入DLL文件,项目直接引用的DLL文件),看下面的堆栈信息,显 ...

  3. SQL数据库知识二(Day 25)

    又到了总结知识的时候了,今天主要把SQL数据库给简单的学完了,明天开始就要开始学ADO.NET的知识了.好了,话不多说,还是看一下今天都学了哪些内容. 1  字符串类型的知识点 --类型的使用 --截 ...

  4. ftp上来显示的时间和系统时间不一致

    ftp上来显示的时间和系统时间不一致,是因为默认情况下,vsftpd 是用GMT做为他的时间的,所以和系统的时间可能会不一致 修改也非常简单: vi /etc/vsftpd/vsftpd.conf 在 ...

  5. 关于中文乱码的解决方法(URL方式)

    假设keyWord ='阳光'; url="play.jsp? keyWord ="+ keyWord 若按照上述的地址直接访问,则中文会变成乱码.必须使用encodeURI()进 ...

  6. CSS3盒模型display:-webkit-box;的使用

    box-flex是css3新添加的盒子模型属性,它的出现可以解决我们通过N多结构.css实现的布局方式.经典的一个布局应用就是布局的垂直等高.水平均分.按比例划分. 目前box-flex属性还没有得到 ...

  7. c++ containers

    顺序容器 array(C++11) vector string deque forward_list(C++11) list 容器适配器 stack queue priority_queue 关联容器 ...

  8. 刷爆github小绿点

    转载请注明出处:https://ahangchen.gitbooks.io/windy-afternoon/content/kit/git/green_blush.html 工程地址,欢迎star!! ...

  9. surface 其实是UEFI与BIOS并存,借用官网的进入方法(少有更改)

    surface 其实是UEFI与BIOS并存,借用官网的进入方法(少有更改) 第一种: 1.       Swipe in from the right edge of the screen, and ...

  10. JS知识点摘记(一)

    JavaScript:基于对象和事件的脚本语言 特点: 安全性:不允许直接访问本地硬盘,可做的就是信息的动态交互 跨平台性:只要可以解析JS的浏览器就可执行,与平台无关 JavaScript与Java ...