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