使用List.Add时,C# - Class.models.modelname.list.get返回null

时间:2018-01-22 18:17:01

标签: c#

我建了一个班:

<link rel="stylesheet" href="/site.css">

它使用这个类:

public partial class SvcCodes
{
    public List<SvcCodeReport> Report { get; set; }
    public List<SvcCodesCheck> TestList { get; set; }
}

在控制器中,数据从两个源中提取并分配给SvcCodeReport类:

public partial class SvcCodeReport
{
    public List<Dictionary<string, object>> ProgResults { get; set; }
    public IEnumerable<ExtraData> ExtraData { get; set; }
}

然后将模型变量添加到Report类:

var model = new SvcCodeReport()
{
  ProgResults = tasks,
  ExtraData = _context.ExtraData.Where(h => h.ServiceCode == Int32.Parse(id)
};

但是当我运行程序时,我得到一个空对象错误和一行说:

check.Report.Add(model);

这个错误是说在添加之前或之后报告是否为空?

如果之前,为什么会出现这个问题? 如果之后,为什么模型变量没有被添加到列表中?

2 个答案:

答案 0 :(得分:3)

您应首先初始化SvcCodes列表,然后在public partial class SvcCodes { public List<SvcCodeReport> Report { get; set; } public List<SvcCodesCheck> TestList { get; set; } public SvcCodes() { Report = new List<SvcCodeReport>(); } } 构造函数中执行此操作;

{{1}}

答案 1 :(得分:0)

我怀疑你是Linq的推迟执行模式。当你执行x.Where()等时,代码不会运行。它仅在您最终强制使用数据时运行。试试这个

var model = new SvcCodeReport()
{
  ProgResults = tasks,
  ExtraData = _context.ExtraData.Where(h => h.ServiceCode == Int32.Parse(id).ToList();
};

这将强制_context.ExtraData在那里进行评估