如果有人能指出我做错了什么,我会非常感激。我正在使用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
Houston TX
公司1
德克萨斯州奥斯汀
我想要的是
公司1
Houston TX
德克萨斯州奥斯汀
我正在关注Contoso University tutorial,因此为我的控制器选择了子模型(在基于父模型的控制器中创建这些分组的令人沮丧的尝试之后)。 edmx模型确实显示了正确的导航属性,它们存在于生成的类文件中。但是,当我查看我的查询时,我发现它正在使用内部联接,这解释了我的结果 - 但完全让我感到困惑!
答案 0 :(得分: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>
}
}