Rod*_*ers 11 c# asp.net-mvc razor asp.net-mvc-4
我想通过我在我的Razor视图模型中的每个项循环,但我希望将所有物品放在一起.然后我想循环遍历每个组.想象一下,我有一张桌子:
ID GroupNo GroupName
1 1 Group1
2 1 Group2
3 1 Group3
4 2 Group1
5 2 Group2
6 3 Group56
Run Code Online (Sandbox Code Playgroud)
我想做的事情如下:
@foreach (var group in Model.GroupNo) {
<section>
<header>Group No is @group.GroupNo</header>
@foreach (var item in group) {
<p>GroupName: @item.GroupName</p>
}
</section>
}
Run Code Online (Sandbox Code Playgroud)
所以我的输出是:
Group No is 1
GroupName: Group1
GroupName: Group2
GroupName: Group3
Group No is 2
GroupName: Group1
GroupName: Group2
Group No is 3
GroupName: Group56
Run Code Online (Sandbox Code Playgroud)
这可能吗?
谢谢
McG*_*gle 28
是的,这很容易使用Linq GroupBy.我建议您更改要使用的视图@model IEnumerable<IGrouping<string, MyModel>>,您可以像这样填充:
var groupModel = MyModelCollection.GroupBy(item => item.GroupNo).ToArray();
return View(groupModel);
Run Code Online (Sandbox Code Playgroud)
然后,只需在编写时遍历该组,除了使用group.Key而不是group.GroupNo检索IGrouping的键:
@foreach (var group in Model) {
<section>
<header>Group No is @group.Key</header>
@foreach (var item in group) {
<p>GroupName: @item.GroupName</p>
}
</section>
}
Run Code Online (Sandbox Code Playgroud)
cod*_*biz 10
LINQ可以帮助您做到这一点
@model IEnumerable<Project1.Models.Group>
@foreach (var item in Model.Select(i=>i.groupno).Distinct().ToList()) {
<tr>
<td>
<header>Group No is @item</header>
@foreach (var grpName in Model.Where(i => i.groupno == item).ToList())
{
<p>GroupName: @grpName.groupName</p>
}
</td>
</tr>
}
Run Code Online (Sandbox Code Playgroud)