问题将字符串或NULL到SQL Server数据库
题
我刚刚看了这个帖子顶端回答:点击 问题插入字符串或NULL到SQL Server数据库
纠正我,如果我错了,但可以?? - 运营商不仅在同类型的两个变量被使用,如果不是我将不胜感激,如果任何人都可以解决我的小问题
我试图在我的项目类似下面的一个插入一些代码。
Dictionary<string, string> strings = new Dictionary<string, string>()
{
{"@param0", strParam0},
{"@param1", strParam1},
{"@param2", strParam2}
};
foreach (string param in strings.Keys)
{
cmd.Parameters.AddWithValue(param, strings[param] ?? DBNull.Value);
}
但是Visual Studio中使用以下信息抱怨:结果 “运营商‘??’可以不适用于类型“串”和“System.DBNull””
的操作数解决方案
的DBNull和空不是相同类型,也不是空类型或引用类型和DBNull的。您只能使用?用相同类型的值。
一个能想到的ΔΣ操作者如语法糖为:
(left != null) ? left : right
和三元操作需要两个左,右是相同类型的,因此,因此左和右??操作者也必须是同一类型的。
所以,很遗憾,没有..你不能做这种方式,至少在没有一些丑陋的铸造。
其他提示
尝试:
cmd.Parameters.AddWithValue(param, (object)strings[param] ?? DBNull.Value);
cmd.Parameters.AddWithValue(param, strings[param] == null ? DBNull.Value : strings[param]);
唯一的缺陷是,它会做的字典里查两次!
不隶属于 StackOverflow