我在linq中使用Convert.ToDecimal
,有时数量值包含点(.),因为用户希望写入 .50 或类似内容,只要他们输入点(使用移动的上的数字键盘),代码就会执行并抛出exception
。
我正在获取以下代码的string is not correct format exception
var enteredAmountInTenders = TenderListCollection.Sum(x => Convert.ToDecimal(string.IsNullOrEmpty(x.Amount) ? "0" : x.Amount));
我怎么能忽略上面代码的点而只得到0呢?
2条答案
按热度按时间xuo3flqw1#
我将使用
decimal.TryParse
而不是Convert.ToDecimal
来转换值。mw3dktmi2#
你可以在你为你的
TenderListCollection
中的对象设置你的属性之前检查这个。一般来说,我不喜欢将金额存储为字符串,所以我也建议将金额重命名为
GivenAmount
,并使用小数的金额属性,这样我们的代码就干净了,您不需要解析Lambda表达式。