ing*_*939 3 c# dbnull conditional-operator
我正在构造一个带有参数的 Command 对象来设置列值。我想使用一个简单的条件将某个nullable int列设置为整数值或DbNull.Value,具体取决于变量是否为空。
例子:
dbCmd.Parameters.Add("@MyIntColumn", SqlDbType.Int).Value =
myColumnValue == null ? DBNull.Value : myColumnValue;
Run Code Online (Sandbox Code Playgroud)
当然,这会给编译器错误:“DbNull 和 int 之间没有隐式转换”。
那么在那里使用条件的正确方法是什么,其结果可以是 int 或 DbNull?
问题是编译器无法推断表达式的结果将是什么类型 - 无论是 aDBNull还是 an int,因为它们是不兼容的类型。
明确地将其至少一侧转换为object(最大公分母),它将理解:
dbCmd.Parameters.Add("@MyIntColumn", SqlDbType.Int).Value =
myColumnValue == null ? (object)DBNull.Value : myColumnValue;
Run Code Online (Sandbox Code Playgroud)