【问题标题】:How to fix System.InvalidCastException: Specified cast is not valid如何修复 System.InvalidCastException:指定的演员表无效
【发布时间】:2017-06-15 10:12:52
【问题描述】:

我有两个数据表,想根据各自的 ID 将它们组合成一个数据表。

如果 ID 在两个初始数据表中重复,则列 columnName 应该被求和。

当我运行我的代码时,我得到了这个错误

如何修复 System.InvalidCastException:指定的强制转换无效

DataTable SubData = dsResult.Tables[0];

var query = SubData.AsEnumerable().GroupBy(row => new
{
    ProductID = row.Field<Int64>("ProductID"),
    PrdCode = row.Field<string>("PrdCode")
}).Select(grp =>
{
    dynamic result = new ExpandoObject();
    var dict = result as IDictionary<string, object>;
    result.ProductID = grp.Key.ProductID;
    result.PrdCode = grp.Key.PrdCode;

    foreach (DataRow row in grp)
    {
       foreach (DataColumn column in SubData.Columns)
       {
          string columnName = column.ColumnName;

          if (columnName.Equals("ProductID") || columnName.Equals("PrdCode"))
          {
              continue;
          }

          if (!dict.Keys.Contains(columnName))
          {
              dict[columnName] = row[columnName];
          }
          else
          {
             if (row[columnName] is System.DBNull)
             {
                continue;
             }

             if (dict[columnName] is System.DBNull)
             {
                 dict[columnName] = row[columnName];
                 continue;
             }

             dict[columnName] = (Int64)dict[columnName] + (Int64)row[columnName];
          }
      }
  }

  return result;
});

foreach (var item in query)
{
    dtGraph.Rows.Add(item);
}

【问题讨论】:

  • 请发布异常的完整描述。
  • 说明:在执行当前网络请求的过程中发生了一个未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。异常详细信息:System.InvalidCastException:指定的强制转换无效。
  • dict[columnName] = (Int64)dict[columnName] + (Int64)row[columnName] 出错;
  • 代码缩进一团糟,按照StyleCop整理代码

标签: c# .net linq-to-sql


【解决方案1】:

验证 'dict' 中的数据。一定有一个值不能转换为'int'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-11-20
    • 1970-01-01
    • 1970-01-01
    • 2021-09-27
    • 2023-04-10
    • 2018-02-06
    • 1970-01-01
    相关资源
    最近更新 更多