C#int/long if值为-1的空合并运算符
我有以下代码将变量分配给“nullable”int类型。由于0在我的用例中有效,-1表示数据库中的空值 这段代码可以按预期在选择上正常工作C#int/long if值为-1的空合并运算符,c#,sql-server,C#,Sql Server,我有以下代码将变量分配给“nullable”int类型。由于0在我的用例中有效,-1表示数据库中的空值 这段代码可以按预期在选择上正常工作 int value = (reader["Value"] as int?) ?? -1; 但是,当我在更新和插入时执行相反的操作时。如果值为-1,如何表示值应为DBNull.value 我觉得我很接近,但我似乎无法让它按预期工作 insertQuery.Parameters.Add("@Value", SqlDbType.Int).Value = valu
int value = (reader["Value"] as int?) ?? -1;
但是,当我在更新和插入时执行相反的操作时。如果值为-1,如何表示值应为DBNull.value
我觉得我很接近,但我似乎无法让它按预期工作
insertQuery.Parameters.Add("@Value", SqlDbType.Int).Value = value ?? -1 : (object)DBNull.Value;
您试图混合使用null合并运算符和条件
?:
运算符。听起来您根本不会得到null
作为输入,因此您不能使用null合并运算符-您只需要条件运算符:
(code as before).Value = value == -1 ? (object) DBNull.Value : value;
强制转换到
对象
需要为条件运算符提供“通用”结果类型。将条件从值更改为-1:(object)DBNull.Value代码>到值==-1?(object)DBNull.Value:Value
这个值不应该吗-1:(object)DBNull.Value代码>be值==-1?(object)DBNull.Value:Value
@vendettamit应该是答案,而不是注释。@vendettamit是的,就是这样。我觉得我很接近,谢谢!把你的答案贴在下面,这样我就可以接受了