我使用参数构造一个Command对象来设置列值。我想使用简单的条件将某个nullable int
列设置为整数值或DbNull.Value
,具体取决于变量是否为空。
示例:
dbCmd.Parameters.Add("@MyIntColumn", SqlDbType.Int).Value =
myColumnValue == null ? DBNull.Value : myColumnValue;
当然,这会给编译器错误:" DbNull和int"之间没有隐式转换。
那么在那里使用条件的正确方法是什么,其结果可以是int还是DbNull?
答案 0 :(得分:1)
问题是编译器无法推断表达式的结果是什么类型 - 无论是DBNull
还是int
,因为它们是不兼容的类型。
明确地将其中的一方强制转换为object
(最高公分母),它会明白:
dbCmd.Parameters.Add("@MyIntColumn", SqlDbType.Int).Value =
myColumnValue == null ? (object)DBNull.Value : myColumnValue;