模型不为null时的空引用异常

时间:2013-11-13 19:46:02

标签: c# asp.net asp.net-mvc asp.net-mvc-3

今天我遇到了奇怪的例外。我的数据库中有两个表,它们有一些链接的列。根据我的应用程序的逻辑,我必须更新选择并发送更新列表到我的视图。所以,我这样做:

return View(repo.Enrollee.ToList().Select(p => {
               p.SpecialtyCode =  repo.EnrolleePlaces.FirstOrDefault(t => 
               t.SpecialtyCode == p.SpecialtyCode).Specialty; 
               return p; 
               }).OrderByDescending(p => p.Update));

当我在foreachModel时,一切正常,但当我尝试使用@Model.Count()来计算模型的项目时,我会得到Nullreference。即使我在第一个Nullreference下复制foreach,我也会得到{{1}}。任何想法可能是什么?

2 个答案:

答案 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());