0

我的程序中有以下代码部分:

 object val;
 val = arr[1].Trim(); // in my case i am getting value here is 1.00

现在,当我为数据行赋值时,出现错误

预期的 int64 值。

datarow[Convert.ToString(drow["col"]).Trim().ToUpper()] = val;

在获得 1.00 以外的价值时,我没有遇到任何问题。

确切的问题可能是什么?我该如何解决?

欢迎提出建议和解决方案

4

2 回答 2

0

如果您的数据表中的该列Int64需要您将val(这是一个字符串)转换为 Int64:

var val = arr[1].Trim(); // String at this point
long longVal = 0;
if(!long.TryParse(val,out longVal){
    throw new InvalidOperationException("value wasnt an Int64!");
}
datarow[Convert.ToString(drow["col"]).Trim().ToUpper()] = longVal
于 2012-04-12T11:20:58.953 回答
0

arr[1] 似乎是字符串,应用 .Trim() 将其保留为字符串,即使它是“1.00”。如果你需要一个整数,你需要解析它。但是,它不能解析为整数,因为它实际上是双精度数。

作为我是否正确的证明,您可以尝试 (Int64)double.Parse(val) 并且应该可以。但是,由您决定这是否对您的程序来说不是问题。有两个可能的问题:

  1. val 可能无法解析加倍,在这种情况下你会得到一个异常
  2. val 可能是双精度,但不能表示为 int(太大,或失去精度,例如“1.8”将变为 1)

希望这可以帮助

于 2012-04-12T11:28:32.363 回答