如何为null-able布尔值读取null

问题描述 投票:1回答:1

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

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

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

c# sql nullable dbnull
1个回答
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?

...但是如果值是其他类型(字符串,整数等),那么你最终会得到一个空值,我通常会对此感到惊慌。 (如果我的数据没有我期望的形状,我想尽快知道。)

© www.soinside.com 2019 - 2024. All rights reserved.