我有一个DateTime?
我正在尝试使用DbParameter
. 我正在像这样创建参数:
DbParameter datePrm = updateStmt.CreateParameter();
datePrm.ParameterName = "@change_date";
然后我想把 s 的值DateTime?
放入dataPrm.Value
while 占null
s。
起初我以为我会很聪明:
datePrm.Value = nullableDate ?? DBNull.Value;
但这因错误而失败
操作员 '??' 不能应用于“System.DateTime?”类型的操作数?和'System.DBNull'
所以我猜这只有在第二个参数是第一个参数的不可空版本时才有效。所以我去了:
datePrm.Value = nullableDate.HasValue ? nullableDate.Value : DBNull.Value;
但这也不起作用:
无法确定条件表达式的类型,因为 'System.DateTime' 和 'System.DBNull' 之间没有隐式转换
但我不想在这些类型之间进行转换!
到目前为止,我唯一可以开始工作的是:
if (nullableDate.HasValue)
datePrm.Value = nullableDate.Value;
else
datePrm.Value = DBNull.Value;
这真的是我写这篇文章的唯一方法吗?有没有办法让使用三元运算符的单线工作?
更新:我真的不明白为什么?版本不起作用。MSDN 说:
这 ??运算符如果不为空则返回左操作数,否则返回右操作数。
这正是我想要的!
Update2:嗯,最后很明显:
datePrm.Value = nullableDate ?? (object)DBNull.Value;