簡體   English   中英

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

[英]C# - Class.models.modelname.list.get returned null when using List.Add

我建立了一個類:

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

它使用此類:

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

在控制器中,數據從兩個來源中提取並分配給SvcCodeReport類:

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

然后將模型變量添加到Report類:

check.Report.Add(model);

但是,當我運行程序時,出現空對象錯誤,並顯示一行:

LRProgReport.Models.SvcCodes.Report.get returned null

此錯誤是否表示在添加之前或之后Report為null?

如果以前有,那是為什么呢? 如果之后,為什么不將模型變量添加到列表中?

您應該首先初始化Report列表,並且可以在SvcCodes構造函數中完成;

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

    public SvcCodes()
    {
        Report = new List<SvcCodeReport>();
    }
}

我懷疑您不了解Linq的延遲執行模型。 當您執行x.Where()等時,代碼不會運行。 僅當您最終強制使用數據時,它才會運行。 試試這個

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

這將強制_context.ExtraData在此處進行評估

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM