将数据从数据集复制到列表错误

时间:2016-02-02 06:57:00

标签: c# linq dataset

我从Stored Procedure获取一些数据到DataSet,然后将该数据复制到List。数据中有一些NULL值,我可以使用DBNULL.Value进行检查。但是无论什么时候出现NULL值,它都会给我错误

  

错误:指定的演员表无效。

这是我的班级定义。

public class CustomClass
{
    public int Id { get; set; }
    public string Code { get; set; }
    public string Name { get; set; }
    public int ZoneId { get; set; }
    public string ShortName { get; set; }
    public int CityId { get; set; }
    public int ExpCenId { get; set; }
    public int CategoryId { get; set; }
    public double Charges { get; set; }

}

这就是我将数据从DataSet复制到List的方式。

objResult.lst.Add(new CustomClass()
{
  Code = dsLogin.Data[I]["Code"].ToString(),
  Id = (int)dsLogin.Data[I]["Id"],
  Name = dsLogin.Data[I]["Name"].ToString(),
  ShortName = dsLogin.Data[I]["ShortName"].ToString(),
  ZoneId = (int)dsLogin.Data[I]["ZoneId"],
  CityId = (int)(dsLogin.Data[I]["CityId"] == DBNull.Value ? 0 : dsLogin.Data[I]["CityId"]),
  ExpCenId = (int)(dsLogin.Data[I]["ExpCenId"] == DBNull.Value ? 0 : dsLogin.Data[I]["ExpCenId"]),
  CategoryId = (int)(dsLogin.Data[I]["CategoryId"] == DBNull.Value ? 0 : dsLogin.Data[I]["CategoryId"]),
  Charges = (double)(dsLogin.Data[I]["Charges"] == DBNull.Value ? 0.0 : dsLogin.Data[I]["Charges"])
});

如果是NULL,当我在即时窗口中检查dsLogin.Data[I]["CityId"]时,它会显示 {} ,当我检查时

(int)(dsLogin.Data[I]["CityId"] == DBNull.Value ? 0 : dsLogin.Data[I]["CityId"])

它显示 0 但是当我尝试在 CityId 中复制它时,它会抛出异常。

我被困在这里并且不知道我做错了什么。任何形式的帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

尝试使用IsCityIdNull()代替DBNull。 DataSet为所有字段生成自动空函数。

或者

尝试Convert.ToInt32而不是(int)。