1

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

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有什么想法吗?

4

2 回答 2

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;
于 2013-11-13T19:53:54.857 回答
0

感谢@AlbinSunnanbo 和他在这里的回答。我有我需要的。刚刚通过调用另一个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());
于 2013-11-14T15:04:48.520 回答