C# 如果字符串默认为空,为什么我无法强制转换类型为';System.DBNull';输入';System.String';。?

C# 如果字符串默认为空,为什么我无法强制转换类型为';System.DBNull';输入';System.String';。?,c#,ms-access,ado.net,nullable,C#,Ms Access,Ado.net,Nullable,我见过类似的线程,比如解决方案是三级if 我的问题是,如果字符串可以为空,为什么还要出现这样的错误 我正在使用ado.net读取access中文本列的值。 每当有一行的文本列为空时,我都会收到该错误 罪魁祸首: while (dr.Read()) { UserList.Add(new UserInfo() { . DestributionGroup = (string)dr["Destribution Group"] .

我见过类似的线程,比如解决方案是三级if

我的问题是,如果字符串可以为空,为什么还要出现这样的错误

我正在使用ado.net读取access中文本列的值。 每当有一行的文本列为空时,我都会收到该错误

罪魁祸首:

while (dr.Read())
{
      UserList.Add(new UserInfo()
      {
        .
          DestributionGroup = (string)dr["Destribution Group"]
        .
      }
}
class UserInfo
{
.
    public string DestributionGroup;
.
}
编辑:

换句话说,我必须将我从数据库中读取的所有字符串转换成类似的行

return (accountNumber == DBNull.Value) ? string.Empty : accountNumber.ToString ()

没有别的办法了吗?

因为
null!=DBNull.Value

但您可以使用以下方法检查
DataReader
中的值是否为空:


因为
null!=DBNull.Value

但您可以使用以下方法检查
DataReader
中的值是否为空:


如果您不介意在dr[“Distribution Group”]为DBNull时将Distribution Group设置为null,则可以使用此选项。值:

DestributionGroup = dr["Destribution Group"] as string;

如果您不介意在dr[“Distribution Group”]为DBNull时将Distribution Group设置为null,则可以使用此选项。值:

DestributionGroup = dr["Destribution Group"] as string;

因为
null!=System.DBNull
因为
null!=System.DBNull