如何在列值的条件赋值中使用DbNull.Value?

时间:2014-05-23 06:06:26

标签: c# conditional-operator dbnull

我使用参数构造一个Command对象来设置列值。我想使用简单的条件将某个nullable int列设置为整数值或DbNull.Value,具体取决于变量是否为空。

示例:

dbCmd.Parameters.Add("@MyIntColumn", SqlDbType.Int).Value =
    myColumnValue == null ? DBNull.Value : myColumnValue;

当然,这会给编译器错误:" DbNull和int"之间没有隐式转换。

那么在那里使用条件的正确方法是什么,其结果可以是int还是DbNull?

1 个答案:

答案 0 :(得分:1)

问题是编译器无法推断表达式的结果是什么类型 - 无论是DBNull还是int,因为它们是不兼容的类型。

明确地将其中的一方强制转换为object(最高公分母),它会明白:

dbCmd.Parameters.Add("@MyIntColumn", SqlDbType.Int).Value =
    myColumnValue == null ? (object)DBNull.Value : myColumnValue;