如何在C#中从数据读取器强制转换为布尔布尔值?

乔尔二世劳伦西奥

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

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

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

蒂姆·施密特

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

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

之所以有效,是因为如果值是强制转换失败DBNull.Value,那么它将会正确地分配一个bool?is null

或以下不太优雅的版本:

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章