Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/react-native/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#int/long if值为-1的空合并运算符_C#_Sql Server - Fatal编程技术网

C#int/long if值为-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

我有以下代码将变量分配给“nullable”int类型。由于0在我的用例中有效,-1表示数据库中的空值

这段代码可以按预期在选择上正常工作

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.Valuebe
值==-1?(object)DBNull.Value:Value
@vendettamit应该是答案,而不是注释。@vendettamit是的,就是这样。我觉得我很接近,谢谢!把你的答案贴在下面,这样我就可以接受了