使用??不同类型的运算符

时间:2018-03-16 15:17:53

标签: c# sql .net

我在编写SQL查询时的代码中有类似的东西

if (query.BlackWhiteListFieldMatchProxy[i].MatchValue2Or != null)
                parameters.Add($"@matchValue2Or{i}", query.BlackWhiteListFieldMatchProxy[i].MatchValue2Or);
            else
                parameters.Add($"@matchValue2Or{i}", DBNull.Value);

我希望它像

parameters.Add($"@matchValue2Or{i}", query.BlackWhiteListFieldMatchProxy[i].MatchValue2Or ?? DBNull.Value);

编译器不允许我运行它。我尝试转换为对象DBNull.Value - 我最终得到了运行时异常,在投射其他的时也是如此

1 个答案:

答案 0 :(得分:1)

类型必须相同,但它们可以是object,因此您可以将值转换为object

parameters.Add($"@matchValue2Or{i}", query.BlackWhiteListFieldMatchProxy[i].MatchValue2Or as object ?? DBNull.Value);