我正在尝试使用以下方法从数据库强制转换为布尔值:

bool? primaryFlag = reader["primaryflag"] is DBNull ? null: (bool?)reader["primaryflag"];


我不断收到指定的强制转换无效异常。我使用的方法有什么问题?

最佳答案

您不能将其直接转换为Nullable<bool>。但是您可以使用as运算符:

bool? primaryFlag = reader["primaryflag"] as bool?;


之所以可行,是因为如果值DBNull.Value强制转换失败,那么它将正确分配bool?null

或以下不太优雅的版本:

bool? primaryFlag = null;
int colOrdinal = reader.GetOrdinal("primaryflag");
if(!reader.IsDBNull(colOrdinal))
    primaryFlag = reader.GetBoolean(colOrdinal);

关于c# - 如何在C#中从数据读取器强制转换为 boolean boolean 值?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33548531/

10-09 01:24