2

Oracleデータベースから読み取るときに、次のエラーが発生する理由を教えてください。

Object of type 'System.Decimal' cannot be converted to type 'System.Int32'.

オブジェクト型の変数 ( oValue ) を関数に渡すと発生します。私はキャスト、変換、チェック解除、切り捨て、ほぼすべてのシャバンを試しましたが、何も機能しません。コードが失敗する場所は次のとおりです。

PropertyInfo property = Objects[0].GetType().GetProperty(sProperty);
property.SetValue(Objects[0], oValue, null);     

どんな助けでも大歓迎です。

編集:これまでに試したことは次のとおりです。

(int)oValueConvert.ToInt32(oValue)Math.Truncate((decimal)ovalue)Decimal.Truncate((decimal)oValue)Decimal.ToInt32((decimal)oValue)および使用unchecked {}

4

3 に答える 3

3

Put:-

property.SetValue(Objects[0],Decimal.ToInt32(Convert.ToDecimal(oValue)) , null); 
于 2012-08-24T09:26:12.663 に答える
0

As the property expects an Int32 you shouldn't pass a Double value to it.

A boxed value can only be unboxed to the exact same type, so unbox it, convert to an integer and box it:

oValue = (int)((Decimal)oValue);

If you can make the value an Int32 from start that would of course be better.

于 2012-08-24T09:26:16.837 に答える
0

整数型のストアド プロシージャ oracle があり、コード Ado.net で decimal 型のパラメーターを渡します。

パラメータ値を変換できます

decimal value = ...;
int convertedValue = Convert.ToInt32(value);
于 2012-08-24T09:24:09.363 に答える