代码胜过一切说明:
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;
}
}
}
运行结果:
谢谢浏览!