无法从Decimal转换为Int32

时间:2012-08-24 09:21:42

标签: c# oracle

任何人都可以如此友善地告诉我为什么,当从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 {}

3 个答案:

答案 0 :(得分:3)

把: -

property.SetValue(Objects[0],Decimal.ToInt32(Convert.ToDecimal(oValue)) , null); 

答案 1 :(得分:0)

你有整数类型的存储过程oracle,你在代码Ado.net中传递了decimal类型的参数。

您可以转换参数值

decimal value = ...;
int convertedValue = Convert.ToInt32(value);

答案 2 :(得分:0)

由于酒店要求Int32,您不应向其传递Double值。

盒装值只能拆箱到完全相同的类型,因此请将其拆箱,转换为整数并将其装箱:

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

如果您可以从开始时将值设为Int32,那当然会更好。