总结一下BigIntegers的列表

jb.*_*jb. 16 c# syntax sum biginteger

我看了一遍,但无法弄清楚这一点.你如何总结BigIntegers的列表?

Using System.Numerics;
Using System.Linq;

List<BigInteger> bigInts = new List<BigInteger>();
BigInteger sum = bigInts.Sum();             // doesn't work
BigInteger sum = bigInts.Sum<BigInteger>(); // doesn't work
BigInteger sum = bigInts.Sum(x => x);       // doesn't work
Run Code Online (Sandbox Code Playgroud)

你必须这样做吗?

BigInteger sum = new BigInteger(0);
foreach(BigInteger bigint in bigInts)
    sum += bigint;
Run Code Online (Sandbox Code Playgroud)

Sim*_*Var 16

var sum = bigInts.Aggregate(BigInteger.Add);
Run Code Online (Sandbox Code Playgroud)

Aggregate获取一个方法的委托,该方法获取两个BigIntegers并返回一个BigInteger.它使用默认的BigInteger作为初始值(0),并遍历每个BigInteger,使用前一个结果调用BigInteger.Add(0将是第一次的先前结果 - 也称为'seed')和当前元素.


Ale*_*kov 11

聚合函数是Sum的更通用版本:

var bigInts = new List<System.Numerics.BigInteger>(); 
bigInts.Add(new System.Numerics.BigInteger(1));

var result = bigInts.Aggregate((currentSum, item)=> currentSum + item));
Run Code Online (Sandbox Code Playgroud)

  • 或者只是`bigInts.Aggregate(BigInteger.Add)`:) (8认同)
  • @leppie把它放在一个答案中,我倾向于赞成它:-) (3认同)