如何绑定List对象没有重复属性

时间:2017-12-12 07:13:45

标签: c#

我有一个对象:

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; }
}

但是当我在View中绑定它时,使用foreach循环:

@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>

它返回一个房间列表及其部门&amp;楼层,但是当我有2层时,它是重复的: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> 

但我只需要:

<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> 

使用相同的DepartmentType&amp;不同楼层。我已经搜索了如何使用DepartmentType grouped list但不知道如何在foreach循环中使用它。请帮助我。这picture显示我被困在哪里。我希望“PhòngKhám”和“Quầythủtục”有4个房间(单独),而不是重复。

1 个答案:

答案 0 :(得分:0)

您可以按部门类型订购线路:

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>

    }