Asp.net mvc LINQ到图元:子对象消失

Asp.net mvc LINQ到图元:子对象消失,asp.net-mvc,linq-to-entities,Asp.net Mvc,Linq To Entities,我试图理解为什么有时候我的子对象会消失 在我的列表视图中,我有标准 <% foreach (var item in Model) 但如果我尝试这样做: <%= Html.Encode(item.Map.FirstOrDefault().Field)%> 我得到一个空指针异常,item.Map有0个元素 有人能解释为什么会发生这种情况吗?您可能不需要.Include语句。但我不确定这是否解决了您的问题,因为我不知道空指针的原因 需要注意的是:在执行MVC时,您可能不应该在视

我试图理解为什么有时候我的子对象会消失

在我的列表视图中,我有标准

<% foreach (var item in Model)
但如果我尝试这样做:

 <%= Html.Encode(item.Map.FirstOrDefault().Field)%>
我得到一个空指针异常,item.Map有0个元素


有人能解释为什么会发生这种情况吗?

您可能不需要.Include语句。但我不确定这是否解决了您的问题,因为我不知道空指针的原因

需要注意的是:在执行MVC时,您可能不应该在视图中执行像.FirstOrDefault这样的Linq查询

list = from item in _entities.DataTable
       select new
       {
           Name = item.Name
           Maps = item.Maps
       };
使用此语法,您可以在控制器中执行更多Linq查询

list = from item in _entities.DataTable
       select new
       {
           Name = item.Name
           FirstMap = item.Maps.FirstOrDefault()
       };
甚至

list = from item in _entities.DataTable
       select new
       {
           Name = item.Name
           Maps = from map in item.Maps
                  where map = somecondition
                  select map
       };

它有0个元素还是为空?是什么导致空指针,那么什么对象是空的呢?当我在第一个foreach上设置断点时,item.Map有2个元素。第二个foreach遍历2个映射项。就在我尝试访问item.Map.First时,映射集合突然为空。
list = from item in _entities.DataTable
       select new
       {
           Name = item.Name
           FirstMap = item.Maps.FirstOrDefault()
       };
list = from item in _entities.DataTable
       select new
       {
           Name = item.Name
           Maps = from map in item.Maps
                  where map = somecondition
                  select map
       };