How to fix System.InvalidCastException: Specified cast is not valid

时间:2017-06-15 10:12:52

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

I have two Data Tables and want to combine them to form one Data Table based on their individual ID's.

The column columnName should get summed up if the ID is duplicated across the two initial Data Tables.

When I run my code I get this error

How to fix System.InvalidCastException: Specified cast is not valid

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);
}

1 个答案:

答案 0 :(得分:0)

验证&d;中的数据&#39;。必须有一个您无法转换为&#39; int&#39;

的值