【问题标题】:LINQ to List: Specified cast is not validLINQ to List:指定的强制转换无效
【发布时间】:2019-06-06 07:27:35
【问题描述】:

我正在尝试计算与我的条件匹配的列的总和。 “数量”列的列表(lstSumQty)中的记录为字符串格式(注意:由于此数据来自最终用户上传的 excel 文件。因此,数量列有时为字符串或十进制) .

由于column string DataType,系统抛出异常:Specified cast is not valid, How to cast 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。

任何帮助将不胜感激:)。

【问题讨论】:

    标签: c# .net linq


    【解决方案1】:

    通用类型参数(在您的情况下为&lt;decimal&gt;)并不表示您希望它返回什么,而是它在数据库中什么。 p>

    所以你需要在计算它们的总和之前将你的字符串转换为数字:

    tUnitTotal = lstSumQty.AsEnumerable()
        .Where(row => row.Field<string>("Unit") == "t")
        .Sum(row => Convert.ToDecimal(row.Field<string>("Quantity")))
        .ToString();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-04-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-28
      • 1970-01-01
      • 2018-05-27
      相关资源
      最近更新 更多