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. 在magento中定义static block

    在magento中如何调用static block?(系统面板内CMS---->static block) 解答:若想在站点页面的某个地方放点静态的内容,比如广告,或者是促销信息之类的,这样的东 ...

  2. 【玩转Ubuntu】02. Ubuntu上搭建Android开发环境

    一. 基本环境搭建 1.官网http://developer.android.com/sdk/index.html ,下载adt-bundle-linux-x86_64-20130729.zip 2. ...

  3. POJ2229 Sumsets 【递归】

    Sumsets Time Limit: 2000MS   Memory Limit: 200000K Total Submissions: 13210   Accepted: 5300 Descrip ...

  4. HDU1506_Largest Rectangle in a Histogram

    Largest Rectangle in a Histogram Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 ...

  5. Android Studio的配置

    第一次使用Android Studio时你应该知道的一切配置 - 生命壹号 - 博客园http://www.cnblogs.com/smyhvae/p/4390905.html

  6. GCD 的初步认识

    1.什么是 GCD? GCD为Grand Central Dispatch的缩写 (GCD)是Apple开发的一个多核编程的较新的解决方法.它主要用于优化应用程序以支持多核处理器以及其他对称多处理系统 ...

  7. EC读书笔记系列之11:条款20、21

    条款20 宁以pass-by-reference-to-const替换pass-by-value 记住: ★尽量以pass-by-reference-to-const替换pass-by-value.前 ...

  8. Rectangles

    Given two rectangles and the coordinates of two points on the diagonals of each rectangle,you have t ...

  9. 不要伤害指针(5)--void和void指针详解

    原文转载地址:http://blog.csdn.net/sunchaoenter/article/details/6587426 增加自己的想法,作为笔记. 1.概述 许多初学者对C/C++语言中的v ...

  10. Programming C#.Interfaces

    类实现一个接口时,它必须实现该接口的所有部分(方法和属性等),效果相当于类要表明:“我同意履行这个接口所定义的协定.” 从抽象类继承实现了“is-a(是一种)”关系,实现接口时一种“implement ...