今天我遇到了奇怪的例外。我的数据库中有两个表,它们有一些链接的列。根据我的应用程序的逻辑,我必须更新选择并发送更新列表到我的视图。所以,我这样做:
return View(repo.Enrollee.ToList().Select(p => {
p.SpecialtyCode = repo.EnrolleePlaces.FirstOrDefault(t =>
t.SpecialtyCode == p.SpecialtyCode).Specialty;
return p;
}).OrderByDescending(p => p.Update));
当我在foreach
上Model
时,一切正常,但当我尝试使用@Model.Count()
来计算模型的项目时,我会得到Nullreference
。即使我在第一个Nullreference
下复制foreach
,我也会得到{{1}}。任何想法可能是什么?
答案 0 :(得分:3)
即使您确定您的变量不为空:
如果您使用FirstOrDefault
,则返回的值可能为null,因此您必须先检查它才能访问.Specialty
:
p.SpecialtyCode = repo.EnrolleePlaces.FirstOrDefault(t =>
t.SpecialtyCode == p.SpecialtyCode).Specialty;
您可以使用以下内容:
var someVar = repo.EnrolleePlaces.FirstOrDefault(t => t.SpecialtyCode == p.SpecialtyCode);
p.SpecialtyCode = someVar == null? null : someVar.Specialty;
答案 1 :(得分:0)
感谢@AlbinSunnanbo和他的回答here。我有我需要的东西。刚刚通过调用另一个ToList()
...
所以,这就是答案:
return View(repo.Enrollee.ToList().Select(p => {
p.SpecialtyCode = repo.EnrolleePlaces.FirstOrDefault(t =>
t.SpecialtyCode == p.SpecialtyCode).Specialty;
return p;
}).OrderByDescending(p => p.Update).ToList());