任何人都可以如此友善地告诉我为什么,当从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)oValue
,Convert.ToInt32(oValue)
,Math.Truncate((decimal)ovalue)
,Decimal.Truncate((decimal)oValue)
,Decimal.ToInt32((decimal)oValue)
以及使用unchecked {}
答案 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
,那当然会更好。