[英]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.