重写这些(错误)行的最佳方法是什么?
bool? result = dr["result"] == DBNull.Value ? null : Convert.ToInt32(dr["result"]);
...和...
dr["result"] = result ?? DBNull.Value;
两者都不编译。
我正在使用 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
显然与 bool?
不是同一类型。但是,将 bool?
转换为 object
会使它们成为同一类型。类似的规则适用于第二行。
关于asp.net - 在 ASP.NET 中处理 DBNull 和 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7373455/