Linq扩展方法之Aggregate 对序列应用累加器函数
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);
Linq扩展方法之Aggregate 对序列应用累加器函数的更多相关文章
- 【手记】走近科学之为什么明明实现了IEnumerable<T>的类型却不能调用LINQ扩展方法
比如Json.NET的JObject明明实现了IEnumerable<T>,具体来说是IEnumerable<KeyValuePair<string, JToken>&g ...
- 用LinQ扩展方法,泛型扩展方法,实现自定义验证字符是否空、对象是否为null,及泛型约束使用,Action的使用
一.Linq扩展方法 1.扩展方法必须是静态方法.扩展方法所在的类必须是静态类 2.扩展方法里面的参数必须制定this关键字,紧跟需要扩展的类型,如下: 二.泛型约束 1.使用泛型的原因,是在不知道需 ...
- ABP框架源码中的Linq扩展方法
文件目录:aspnetboilerplate-dev\aspnetboilerplate-dev\src\Abp\Collections\Extensions\EnumerableExtensions ...
- 【手记】走近科学之为什么JObject不能调用LINQ扩展方法
Json.NET的JObject明明实现了IEnumerable<T>,具体来说是IEnumerable<KeyValuePair<string, JToken>> ...
- Linq扩展方法获取单个元素
在使用Linq 提供的扩展方法时,First(OrDefault), Single(OrDefault), Last(OrDefault)都具有返回单个元素的功能.MSDN对这些方法的描述只有功能说明 ...
- LinQ—扩展方法
概述 本节主要解说扩展方法,涉及LinQ的详细知识不多. 扩展方法的描写叙述 .net framework为编程人员提供了非常多的类,非常多的方法,可是,不论.net framework在类中为我们提 ...
- Linq扩展方法之All 、Any
// Summary: // 确定序列中的所有元素是否满足条件. // Parameters: // source:包含要应用谓词的元素的 System.Collections.Generic.IEn ...
- Stackoverflow 珠玑:用于分组的 LINQ 扩展方法
从 stackoverflow.com 上抄来的,将 IEnumerable 中的元素进行切分的方法,无动态内存分配,地球上最快的实现: public static class LinqExtensi ...
- C#编程(六十一)------------LINQ中的扩展方法
原文链接: http://blog.csdn.net/shanyongxu/article/details/47208401 LINQ中的扩展方法 LINQ中where扩展方法,要想使用,必须导入us ...
随机推荐
- [转贴]C++、C#写的WebService相互调用
以下宏文(原文在 http://blog.sina.com.cn/s/blog_4e7d38260100ade4.html),是转贴并进行了修饰编辑: 首先感谢永和兄提供C++的WebService服 ...
- perl 对象
唯一标识: 很明显,一个%employee 是不够的,每个雇员都要求有一个唯一标识和他或她自己的属性集合. 你可以动态的分配这个数据结构,也可以返回一个指向局部数据结构的引用 Vsftp:/root/ ...
- 【CF】110 Div.1 B. Suspects
这题目乍眼一看还以为是2-sat.其实很水的,O(n)就解了.枚举每个人,假设其作为凶手.观察是否满足条件.然后再对满足的数目分类讨论,进行求解. /* 156B */ #include <io ...
- C# 利用BarcodeLib.dll生成条形码
首先效果: 1:首先下载BarcodeLib.dll 下载地址 http://pan.baidu.com/share/link?shareid=2590968386&uk=2148890391 ...
- 【转】Xcode7.1环境下上架iOS App到AppStore 流程 (Part 一)
原文网址:http://www.cnblogs.com/ChinaKingKong/p/4957682.html 前言部分 之前App要上架遇到些问题到网上搜上架教程发现都是一些老的版本的教程 ,目前 ...
- 学习手工创建表,表关系以及用exists 来查询
---创建表a If exists(select * from sysobject where [name]=='a' and xType = 'u') Begin Drop table aa End ...
- Ruby 程序员最要好的朋友
Ruby 是... 一种跨平台.面向对象的动态类型编程语言.Ruby 体现了表达的一致性和简单性, 它不仅是一门编程语言,更是表达想法的一种简练方式. https://www.ruby-lang.or ...
- 如何设置textarea光标默认为第一行第一个字符
判断文本区是否有内容,如果没有那么光标肯定是在第一行第一个为止的,记住,空格回车也算是有内容在的,也会影响光标的位置
- javascript中String 对象slice 和substring 区别
1.slice(start,stop)和substring(start,stop) 方法都是用于提取字符串中从start开始到stop-1间的字符(因为字符串索引是从0开始).其中 start必 ...
- 配置nginx如果获取不到图片 去另外一台服务器获取
配置nginx服务器从一台服务器如果获取不到图片 从另外一台服务器中获取 location ^~ /uploads/ { root /data/weiwend/weiwang; try_files $ ...