关于 Linq 中的 Aggregate 扩展方法的实例
2011-06-15 11:55 音乐让我说 阅读(445) 评论(0) 编辑 收藏 举报代码胜过一切说明:
using System; using System.Collections.Generic; using System.Linq; namespace ConAppTestDemo { class Program { static void Main(string[] args) { var numbers = GetArray(5); var result = (from n in numbers select n).Aggregate( (total, next) => { return total * next; }); //通过调试发现,当 n 等于第一个数时,直接赋值:total = n,从第二个数开始,才 return total * next Console.WriteLine("5的阶乘为:{0}", result);//返回120,也就是1*2*3*4*5 var result2 = numbers.Aggregate<int, double>(0.001, (double begin, int next) => { return begin + next; }); Console.WriteLine("有初始值的数加上一个集合所有的数,得到的结果为:{0}", result2);//返回15.001,也就是 0.001+1+2+3+4+5 var result3 = numbers.Aggregate<int, string, string>("A&", (string total, int next) => { return total + next + "&"; }, (string tempResult) => { return tempResult + "!"; }); Console.WriteLine("累计后相加得:{0}", result3); //返回A&1&2&3&4&5&!,也就是 A& + 1& + 2& + 3& + 4& + 5& + ! } static IEnumerable<int> GetArray(int max) { List<int> result = new List<int>(max); for (int i = 0; i < max; i++) { result.Add(i + 1); } return result; } } }
运行结果:
谢谢浏览!
作者:音乐让我说(音乐让我说 - 博客园)
出处:http://music.cnblogs.com/
文章版权归本人所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。