如何使用Linq C#将字符串转换为十进制求和

以下是有问题的陈述。它不断抛出异常,指出“输入字符串的格式不正确”

totalAmount = QDL.Document.Totals.Total.Sum(s => decimal.Parse(s.valueTotal));

我的totalAmount变量是十进制类型,“ Total”是包含valueTotal的列表,该列表也是字符串数据类型。

一个约束是我的valueTotal HAS必须为字符串数据类型(不能更改),并且必须将所有这些总数的总和写入必须为十进制数据类型的totalAmount中。

请帮忙!

更新: 根据Styx在评论中的建议实现了以下内容:

totalAmount = QDL.Document.Totals.Total.Sum(s => { decimal result; Decimal.TryParse(s.valueTotal, NumberStyles.None, CultureInfo.InvariantCulture, out result); return result; });

现在,它只返回零,而不解析我的字符串。请参阅以下在调试期间拍摄的屏幕截图:

Debugging Value

评论
  • 坏pi气
    坏pi气 回复

    问题解决了!

    非常感谢@Styx的回答。

    以下实现可根据需要完美运行:

    totalAmount = QDL.Document.Totals.Total.Sum(s => { decimal result; Decimal.TryParse(s.valueTotal, NumberStyles.AllowDecimalPoint, CultureInfo.InvariantCulture, out result); return result; });
    

    再次感谢。

  • 鸣人
    鸣人 回复

    You can use TryParse() like

    QDL.Document.Totals.Total.Sum(s => 
                     decimal.Tryparse(s.valueTotal, out decimal val)
                     ? val : 0);