如果值为-1,则C#null使用int / long合并运算符

时间:2018-05-23 16:38:00

标签: c# sql-server

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

此代码在SELECT上按预期正常工作

int value = (reader["Value"] as int?) ?? -1;

但是当我在Update和Inserts上做反向时。如果值为-1,我该如何表示值DBNull.Value

我觉得我很亲近,但我似乎无法按预期工作。

insertQuery.Parameters.Add("@Value", SqlDbType.Int).Value = value ?? -1 : (object)DBNull.Value;

2 个答案:

答案 0 :(得分:4)

将您的情况从value ?? -1 : (object)DBNull.Value;更改为value == -1 ? (object)DBNull.Value : value

答案 1 :(得分:3)

您尝试使用空合并运算符和条件['file.0', 'file.1', 'file.2', 'file.3', 'file.10', 'file.100'] 运算符的混合。听起来你根本没有得到?:作为输入,所以你不能使用空合并运算符 - 你只需要条件运算符:

null

需要向(code as before).Value = value == -1 ? (object) DBNull.Value : value; 转换为条件运算符a" common"结果类型。