1

重写这些(错误)行的最佳方法是什么?

布尔?结果 = 博士 [“结果”] == DBNull.Value ?null : Convert.ToInt32(dr["result"]);

...和...

博士[“结果”] = 结果??DBNull.值;

两者都不编译。

我正在使用 MySql 连接器,它不允许我设置,例如,dr["result"] = null;这是我第一次尝试的。

是否有更合适的 .NET 数据类型来表示 MySql 可为空的tinyint(1)

4

2 回答 2

2

怎么样:

     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会使它们都属于同一类型。类似的规则适用于第二行。

于 2011-09-10T17:48:00.750 回答
-1

如果您使用的是存储过程或 SQL 查询,那么您可以使用ISNULL()SQL 函数来处理 NULL...

于 2011-09-10T17:50:05.540 回答