您的位置:首页 > 其它

关于 Linq 中的 Aggregate 扩展方法的实例

2011-06-15 11:55 501 查看
代码胜过一切说明:

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;

}
}
}


运行结果:



谢谢浏览!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: