C#对象和字符串转换

时间:2012-04-12 11:17:56

标签: c#

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

 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的其他价值时,我没有遇到任何问题。

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

欢迎提出建议和解决方案

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

arr [1]似乎是字符串,并且应用.Trim()将其保持为字符串,即使它是“1.00”。如果需要整数,则需要解析它。但是,它无法解析为intteger,因为它实际上是双重的。

作为我是否正确的证明,您可以尝试(Int64)double.Parse(val),这应该工作。但是,您可以自行决定这不是您的计划的问题。有两个可能的问题:

  1. val可能无法解析为double,在这种情况下,您将获得异常
  2. val可能是一个double,但不是一个可以表示为int(太大,或者丢失精度,例如“1.8”将变为1)
  3. 希望这有帮助