2014-07-25 61 views
0

在这里,我需要将双精度转换为整数。指定的转换无效(双精度转换为int)

obj.DayDifference = !string.IsNullOrEmpty(reader["DateDiff"].ToString()) ? 
       (Int32)reader["DateDiff"] : 0; 

类型

  • 类型int

  • database tabledouble precision类型的DateDiffDayDifference

错误

指定的转换是无效

+1

“reader [”DateDiff“]'的值是什么?调试并告诉我们。 –

+0

@SonerGönül,'DateDiff'包含'值'200. – Meem

回答

7

你在做什么就相当于:

object x = 32.5; 
int y = (int) x; 

你不能这样做 - 当您取消装箱时,您必须取消装箱到实际的价值类型。

所以,你需要:

object x = 32.5; 
int y = (int) (double) x; 

演员到double unboxes,并投以intdouble转换为int。你可以做同样的在你的代码:

(Int32)(Double) reader["DateDiff"] : 0; 

好,模几件事情。 CLR允许您将int设置为uint或枚举类型为int等的枚举类型。

+0

是!我知道了。非常感谢。 – Meem