如何为可为空的布尔值读取null

时间:2019-05-01 14:48:04

标签: c# sql nullable dbnull

我正在尝试从数据库读取可为空的值。现在,我的代码将空值转换为false。如何修改代码以允许使用空值?

Ap1ExamTaken = dr["AP1_ExamTaken"] != DBNull.Value && Convert.ToBoolean(dr["AP1_ExamTaken"]),

我希望将null值显示为null而不是false。

1 个答案:

答案 0 :(得分:3)

您可以在此处使用条件运算符,如果值是DBNull.Value,则将其设置为null,否则将其设置为非空值:

Ap1ExamTaken = dr["AP1_ExamTaken"] == DBNull.Value ? null : (bool?) dr["AP1_ExamTaken"];

请注意,如果dr["AP1_ExamTaken"]是非布尔值,非DBNull类型,我会怀疑是您想要的类型。

可以将其编写得更紧凑:

Ap1ExamTaken = dr["AP1_ExamTaken"] as bool?

...但是如果该值是我通常会警觉的其他某种类型(字符串,整数等),则最终将得到一个空值。 (如果我的数据没有我期望的形状,我想尽快知道。)