直接上代码:
IEnumerable<int> list = Enumerable.Range(2, 10); int all = list.Aggregate((sum, index) => sum + index);
调试, 第一次调用,发现sum和index分别取列表的第1和第2个值:
F5下一步,发现把index加到sum了 (sum += index), 然后index取下一个值, 并累积到sum,重复此步骤直到取完列表中的值:
最后计算结果是65
另外2个重载函数:
int all = list.Aggregate(10, (sum, index) => sum + index);
第2个参数与上一个例子参数一样,累积列表中值,第1个参数于累积值要应用这个初始值,在这里相当于用10加65,计算结果75。
bool is75 = list.Aggregate(10, (sum, index) => sum + index, res => res == 75);
第1第2个参数同上,第3个参数是对累积结果做判断,在这里判断累积结果是否等于75,计算结果是true。
从中可以发现,list.Aggregate((sum, index) => sum + index)其实是list.Aggregate(0, (sum, index) => sum + index)的特例,相当于初始值为0而已。
原文:http://www.cnblogs.com/gujf2016/p/6255577.html