我正在尝试计算条件匹配的列的总和。列表“ lstSumQty”中包含“数量”列的记录为字符串格式(注意:由于此数据来自最终用户上传的excel文件。因此,“数量”列有时为字符串或十进制)
由于列字符串DataType,系统引发异常:指定的转换无效,如何转换或解决?
列表中的数据
Unit Quantity
"t" "10"
"t" "05"
"kg" "14"
"t" "02"
结果应为: tUnitTotal = 17
请参见以下代码
tUnitTotal = lstSumQty
.AsEnumerable()
.Where(row => row.Field<string>("Unit") == "t")
.Sum(row => row.Field<decimal>("Quantity"))
.ToString();
我也可以使用LINQ使用DataSet或DataTable,而不是使用List。
任何帮助将不胜感激:)。
答案 0 :(得分:7)
通用类型参数(在您的情况下为<decimal>
)并不表示您要想要返回什么,而是表示数据库中要的内容。
因此,您需要先将字符串转换为数字,然后再计算其总和:
tUnitTotal = lstSumQty.AsEnumerable()
.Where(row => row.Field<string>("Unit") == "t")
.Sum(row => Convert.ToDecimal(row.Field<string>("Quantity")))
.ToString();