我正在尝试计算符合我的条件的列的总和。列表(lstSumQty)中“数量”列的记录采用字符串格式(注意:由于此数据来自最终用户上传的 excel 文件。因此,数量列有时为字符串或十进制) .
由于column string DataType,系统抛出异常:Specified cast is not valid,How to cast it or resolve?
列表中的数据
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();
除了 List,我还可以使用 LINQ 使用 DataSet 或 DataTable。
如有任何帮助,我们将不胜感激:)。
最佳答案
通用类型参数(在您的情况下为 <decimal>
)并不表示您希望返回什么,而是表示它在数据库中是的。 p>
所以你需要在计算它们的总和之前将你的字符串转换为数字:
tUnitTotal = lstSumQty.AsEnumerable()
.Where(row => row.Field<string>("Unit") == "t")
.Sum(row => Convert.ToDecimal(row.Field<string>("Quantity")))
.ToString();
关于c# - LINQ 列表 : Specified cast is not valid,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56472765/