重写这些(错误的)行的最佳方法是什么?
BOOL? result = dr [“result”] == DBNull.Value? null:Convert.ToInt32(dr [“result”]);
...和...
dr [“result”] =结果?? DBNull.Value;
两者都不编译。
我正在使用MySql连接器,它不允许我设置,例如,dr["result"] = null;
这是我第一次尝试。
是否有更合适的.NET数据类型来表示MySql可空tinyint(1)
?
答案 0 :(得分:2)
怎么样:
dr["Hello"] = (object)result ?? DBNull.Value;
bool? result = dr["result"] == DBNull.Value ? null : (bool?)(Convert.ToInt32(dr["result"]) != 0);
您的建议未编译的原因是三元运算符?:
的两个备选方案必须具有相同的类型。 DBNull.Value
显然与bool?
的类型不同。然而,将bool?
投射到object
会使它们成为同一类型。类似的规则适用于第二行。
答案 1 :(得分:-1)
如果您正在使用存储过程或SQL查询,那么您可以使用SQL的ISNULL()
函数来处理NULL ...