gpt4 book ai didi

c# - 对象不能从 DBNull 转换为构造函数中的其他类型

转载 作者:太空宇宙 更新时间:2023-11-03 21:40:08 25 4
gpt4 key购买 nike

我需要在列表中添加一个对象 CompanyDetails,这样我就可以从数据库中获取数据,并将其加载到构造函数中。

result.Add(new CompanyDetails() { 
Name = dr["name"].ToString(),
City = dr["city"].ToString(),
StreetName = dr["streetName"].ToString(),
StreetNr = Convert.ToInt32(dr["apartmentNr"]),
Tax = int.Parse(dr["TAX"].ToString() )});

StreetNrTax 可以有空值。当我尝试运行它时出现错误:

Object cannot be cast from DBNull to other types

我该如何解决?我知道通常我应该检查 tax 或 streetNr 是否等于 DBNull,但我不知道在这种情况下我该怎么做。

这是 CompanyDetails 类:

public class CompanyDetails
{
public string Name { get; set; }
public string City { get; set; }
public string StreetName { get; set; }
public int? StreetNr { get; set; }
public int? Tax { get; set; }

}

最佳答案

Tax = dr["TAX"] == DBNull.Value ? 0 : (int)dr["TAX"]

这将检查它是否为 null,如果是,它将 int 值设置为 0,否则它分配整数值。

将其应用于您的代码:

result.Add(new CompanyDetails() { 
Name = dr["name"].ToString(),
City = dr["city"].ToString(),
StreetName = dr["streetName"].ToString(),
StreetNr = dr["apartmentNr"] == DBNull.Value ? 0 : (int)dr["apartmentNr"]
Tax = dr["TAX"] == DBNull.Value ? 0 : (int)dr["TAX"]
)});

编辑:
如果 StreetNrTax 已经是 int? 类型,则只需分配 null 而不是 0

result.Add(new CompanyDetails() { 
Name = dr["name"].ToString(),
City = dr["city"].ToString(),
StreetName = dr["streetName"].ToString(),
StreetNr = dr["apartmentNr"] == DBNull.Value ? (int?)null : (int)dr["apartmentNr"]
Tax = dr["TAX"] == DBNull.Value ? (int?)null : (int)dr["TAX"]
)});

关于c# - 对象不能从 DBNull 转换为构造函数中的其他类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19768386/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com