C#对象和字符串转换

C#对象和字符串转换,c#,C#,我的程序中有以下代码部分: object val; val = arr[1].Trim(); // in my case i am getting value here is 1.00 现在,当我给数据行赋值时,我得到了一个错误 应为int64值 我在获得1.00以外的值时不面临任何问题 到底是什么问题?我怎样才能解决它 欢迎提供建议和解决方案如果数据表中的该列需要Int64,则需要将val(字符串)转换为Int64: var val = arr[1].Trim(); // String

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

 object val;
 val = arr[1].Trim(); // in my case i am getting value here is 1.00
现在,当我给数据行赋值时,我得到了一个错误

应为int64值

我在获得1.00以外的值时不面临任何问题

到底是什么问题?我怎样才能解决它


欢迎提供建议和解决方案

如果数据表中的该列需要
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

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

作为我是否正确的证明,您可以尝试(Int64)double.Parse(val),这应该可以工作。然而,这取决于你决定这是否是你的计划的一个问题。有两个可能的问题:

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

  • 希望这有帮助

    数组的类型是什么?Int,String,foo?代码不足,无法给出有意义的答案。卓尔是什么?您是否使用一个数据行的内容来索引另一个数据行的列?col只是datatable的字符串列名,是的,Steve我正在使用一个数据行的内容来索引另一个数据行的列。thanx fro reply。。我用我的代码尝试了这一点,TryParse接受字符串,val是一个对象,因此获取错误类型的参数时出错。@Pramod-不,val是一个字符串-您只是将其键入为对象。我知道它是一个字符串,因为
    Trim()
    的返回值是一个字符串。在我的例子中,val可以有不同的值,可以有emailid、电话号码或金额,当它属于金额类别时,其值为1.00,我面临错误。它们都是int64吗?如果是这样,那么上面的内容就成立了,并且添加了一个更改,您需要先将该对象强制转换为string,即(Int64)double.Parse((string)val))
    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