C#如何在这个Lambda表达式中使用BigInteger?

PiZ*_*zL3 1 c# lambda biginteger

var totalCost = Persons.Sum(x => BigInteger.Parse(x.cost.First(kv => kv.Key == "volvo").Value))

错误:
无法将lambda表达式转换为委托类型' System.Func< Persons,int >',因为块中的某些返回类型不能隐式转换为委托返回类型.
无法隐式将类型' System.Numerics.BigInteger' 转换为' int'.存在显式转换(您是否错过了演员?)

我用它OrderByDescending并且它工作正常.我能理解错误.我只是不知道要替换什么来Sum使它工作.

如何正确使用BigInteger该声明?

Ani*_*Ani 5

从本质上讲,Sum方法的重载不适用于BigInteger.NET 4.0.您可以编写一个自己执行此操作的重载,或使用更通用的Aggregate运算符来进行求和:

var totalCost = Persons.Select(x => BigInteger.Parse(x.cost.First(kv => kv.Key == "volvo").Value))
                       .Aggregate(BigInteger.Zero, (sum, next) => sum + next);
Run Code Online (Sandbox Code Playgroud)