1

如果有人能指出我做错了什么,我将不胜感激。我正在使用 MVC 4,首先使用带有 edmx 文件的数据库,两个简单的表试图在父结果下列出一组子结果。

控制器代码,简化:

 var query = db.Childtablemodel.Include(c => c.ParentTablemodel);
 return View(query.ToList());

IEunumerable 的视图:

enter code here@{ 
foreach (var itm in Model)
{
 <div>

  @itm.ParentTable.DisplayName
  <ul>        
   <li>
    <span> @itm.City </span> <span> @itm.State</span>
   </li>

   </ul>

</div>
 }
}

结果重复每个孩子的父母姓名

公司 1

德克萨斯州休斯顿

公司 1

德克萨斯州奥斯汀

我想要的在哪里

公司 1

德克萨斯州休斯顿

德克萨斯州奥斯汀

我正在关注Contoso 大学教程,因此为我的控制器选择了子模型(在基于父模型的控制器中创建这些分组的尝试令人沮丧之后)。edmx 模型确实显示了正确的导航属性,并且它们存在于生成的类文件中。但是当我查看查询的踪迹时,我发现它正在使用内部连接,这解释了我的结果——但这完全让我感到困惑!

4

1 回答 1

3

您将要使用 linq 的 groupby 来做到这一点。

@{ 
 foreach (var parent in Model.GroupBy(m => m.ParentTable.DisplayName))
 {
  <div>
   @parent.Key
   @foreach( var itm in parent )
   {
    <ul>        
     <li>
      <span> @itm.City </span> <span> @itm.State</span>
     </li>
    </ul>
   }
  </div>
 }
}
于 2013-06-16T22:00:04.580 回答