I want to loop through each item in my model in my razor view but I want to group all items together. I then want to loop through each group. Imagine I have a table:
ID GroupNo GroupName
1 1 Group1
2 1 Group2
3 1 Group3
4 2 Group1
5 2 Group2
6 3 Group56
I want to do something like:
@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>
}
So my output is:
Group No is 1
GroupName: Group1
GroupName: Group2
GroupName: Group3
Group No is 2
GroupName: Group1
GroupName: Group2
Group No is 3
GroupName: Group56
Is this possible?
Thanks
LINQ can help you do that
Yes, this is easy to do using the Linq
GroupBy
. I'd suggest changing your view to use@model IEnumerable<IGrouping<string, MyModel>>
, which you'd populate like this:Then, simply iterate through the group as you wrote, except using
group.Key
instead ofgroup.GroupNo
to retrieve IGrouping's key: