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

arr[1] は文字列のようで、 .Trim() を適用すると、「1.00」であっても文字列として保持されます。整数が必要な場合は、それを解析する必要があります。ただし、実際には double であるため、整数に解析することはできません。

私が正しいかどうかの証明として、 (Int64)double.Parse(val) を試すことができます。ただし、それがプログラムの問題ではないかどうかを判断するのはあなた次第です。次の 2 つの問題が考えられます。

  1. val は double に解析できない可能性があり、その場合は例外が発生します
  2. val は double である可能性がありますが、int として表現できるものではありません (大きすぎるか、精度が失われます。例: "1.8" は 1 になります)

お役に立てれば

于 2012-04-12T11:28:32.363 に答える
0

データテーブルのその列が を期待している場合(文字列) を Int64Int64に変換する必要があります。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
于 2012-04-12T11:20:58.953 に答える