如何为可为空的布尔值读取 null
How to read null for null-able Boolean values
我正在尝试从数据库中读取可为空的值。现在我的代码正在将 null 值转换为 false。如何修改我的代码以允许空值?
Ap1ExamTaken = dr["AP1_ExamTaken"] != DBNull.Value && Convert.ToBoolean(dr["AP1_ExamTaken"]),
我希望 null 值显示为 null 而不是 false。
您可以在此处使用条件运算符,如果值为 DBNull.Value
,则将其设置为 null,否则为不可为 null 的值:
Ap1ExamTaken = dr["AP1_ExamTaken"] == DBNull.Value ? null : (bool?) dr["AP1_ExamTaken"];
请注意,如果 dr["AP1_ExamTaken"]
是非布尔、非 DBNull 类型,这将引发异常,我 怀疑 是你想要的。
你可以把它写得更紧凑:
Ap1ExamTaken = dr["AP1_ExamTaken"] as bool?
... 但是如果该值是我通常会担心的其他类型(字符串、整数等),那么您最终会得到一个空值。 (如果我的数据没有我期望的形状,我想尽快知道。)
我正在尝试从数据库中读取可为空的值。现在我的代码正在将 null 值转换为 false。如何修改我的代码以允许空值?
Ap1ExamTaken = dr["AP1_ExamTaken"] != DBNull.Value && Convert.ToBoolean(dr["AP1_ExamTaken"]),
我希望 null 值显示为 null 而不是 false。
您可以在此处使用条件运算符,如果值为 DBNull.Value
,则将其设置为 null,否则为不可为 null 的值:
Ap1ExamTaken = dr["AP1_ExamTaken"] == DBNull.Value ? null : (bool?) dr["AP1_ExamTaken"];
请注意,如果 dr["AP1_ExamTaken"]
是非布尔、非 DBNull 类型,这将引发异常,我 怀疑 是你想要的。
你可以把它写得更紧凑:
Ap1ExamTaken = dr["AP1_ExamTaken"] as bool?
... 但是如果该值是我通常会担心的其他类型(字符串、整数等),那么您最终会得到一个空值。 (如果我的数据没有我期望的形状,我想尽快知道。)