0

I have an object:

public class RoomViewModel
{
 public int ID { get; set; }

 public string Name{ get; set; }

 [JsonProperty(PropertyName = "data-space")]
 public string RoomNumber{ get; set; }

 [JsonProperty(PropertyName = "data-category")]
 public int DepartmentType { get; set; }

 [JsonProperty(PropertyName = "data-level")]
 public int Floor{ get; set; }
}

But when I'm binding it in View, with a foreach loop:

@model List<MyProject.ViewModels.RoomViewModel>
<ul class="list grouped-by-category">
@if (Model.Any())
{
    foreach (var room in Model)
    {
        <li class="list__item" data-level="@room.Floor" data-category="@room.DepartmentType" data-space="@room.RoomNumber">@room.Name</li>

    }
}
</ul>

It returns a List of Rooms with it's department & floor, but it's duplicate when I have 2 floors: picture

<ul class="list grouped-by-category">
<li class="list__item" data-level="1" data-category="1" data-space="1.01"> Room 1</li> 
<li class="list__item" data-level="1" data-category="1" data-space="1.02"> Room 2</li>
<li class="list__item" data-level="1" data-category="2" data-space="2.03"> Room 3</li>
<li class="list__item" data-level="1" data-category="2" data-space="1.08"> Room 8</li>

<li class="list__item" data-level="2" data-category="1" data-space="1.04"> Room 4</li>
<li class="list__item" data-level="2" data-category="1" data-space="2.05"> Room 5</li>
<li class="list__item" data-level="2" data-category="2" data-space="1.06"> Room 6</li>
<li class="list__item" data-level="2" data-category="2" data-space="2.07"> Room 7</li>
</ul> 

But all I need is:

<ul class="list grouped-by-category">
<li class="list__item" data-level="1" data-category="1" data-space="1.01"> Room 1</li> 
<li class="list__item" data-level="1" data-category="1" data-space="1.02"> Room 2</li>
<li class="list__item" data-level="2" data-category="1" data-space="1.04"> Room 4</li>
<li class="list__item" data-level="2" data-category="1" data-space="2.06"> Room 6</li>

<li class="list__item" data-level="1" data-category="2" data-space="2.03"> Room 3</li>
<li class="list__item" data-level="1" data-category="2" data-space="1.05"> Room 5</li>
<li class="list__item" data-level="2" data-category="2" data-space="1.07"> Room 7</li>
<li class="list__item" data-level="2" data-category="2" data-space="2.08"> Room 8</li>
</ul> 

With the same DepartmentType & different Floor. I've searched how to grouped list of DepartmentType but don't know how to use this in a foreach loop. Please help me.This picture shows where i'm stuck at. I want "Phòng Khám" and "Quầy thủ tục" to have 4 rooms(separately), not duplicates.

hustlecoder
  • 187
  • 1
  • 1
  • 9
Khoa
  • 15
  • 8

1 Answers1

0

You can order your lines by department type:

foreach (var room in Model.OrderBy(c=>c.DepartmentType))
    {
        <li class="list__item" data-level="@room.Floor" data-category="@room.DepartmentType" data-space="@room.RoomNumber">@room.Name</li>

    }
Kirill Bestemyanov
  • 11,946
  • 2
  • 24
  • 38