2017-10-20 123 views
0

我是MVC中的新成員。在這個頁面中;我通過循環列出屬於「單元名稱」的項目。而我想要做的是:我想將屬於同一個「單元名稱」的項目分組。每個項目都有其所屬的「單位名稱」。可以有一個以上的項目屬於一個單位。所以我想分組。在MVC中使用LINQ進行分組/ GROUP BY

我CSHTML代碼如下:

@if (Model.Projects.Any()) 
{ 
    foreach (var item in Model.Projects.ToList()) 
    { 
     <div class="ProjectPartialBody" data-id="@item.ID"> 
      <div class="portlet box blue"> 
       <div class="portlet-title"> 
        <div class="caption"> 
         <span><i class="glyphicon glyphicon-asterisk"></i> @item.tbl_Unit.Name</span> 
        </div> 
        <div class="tools"> 
         <a href="#" class="collapse"> </a> 
        </div> 
        <div class="actions"> 
         <a href="@Url.Action("Details", "Project", new {ID=item.ID })" class="btn btn-circle default">Details</a> 
        </div> 
       </div> 
       <div class="portlet-body"> 
        <span><i class="fa fa-file"></i> @item.Name</span> 
        <span><i class="fa fa-calendar"> Contract Start and End Dates: @(item.ContractStartDate != null ? item.ContractStartDate.Value.ToString("dd.MM.yyyy") : "-")/@(item.ContractEndDate != null ? item.ContractEndDate.Value.ToString("dd.MM.yyyy") : "-")</i></span> 
        <div class="well"> 
         <div class="form-group"> 
          <label>Cash Completion Rate: %@item.CashCompletionRate</label> 
          <div class="progress progress-striped active"> 
           <div class="progress-bar progress-bar-info" role="progressbar" style="width: @(item.CashCompletionRate)%;"></div> 
          </div> 
         </div> 
        </div> 
        <div class="well"> 
         <div class="form-group"> 
          <label>Physical Completion Rate: %@item.PhysicalCompletionRate</label> 
          <div class="progress progress-striped active"> 
           <div class="progress-bar progress-bar-info" role="progressbar" style="width: @(item.PhysicalCompletionRate)%;"></div> 
          </div> 
         </div> 
        </div> 
       </div> 
      </div> 
     </div> 
    } 
} 

和頁面的觀點如下(我的看法是土耳其的語言,但你會明白我說的):

My Page View

你能幫我嗎?如果還有其他代碼塊需要插入,請告訴我。

+0

每個項目都有一個它所屬的「單位名稱」。可以有一個以上的項目屬於一個單位。所以我想分組。 @Paaz –

回答

0

首先,您需要按你的說法:

foreach(var unitGroup in Model.Projects.GroupBy(g => g.tbl_Unit.Name)) 
{ 
    //...your MVC markup here 
} 

現在你actualy需要改變的標記,你會需要把另一個foreach循環將產生項目的標記。

所以有些東西與此相似。

<div class="ProjectPartialBody" data-id="@item.ID"> 
<div class="portlet box blue"> 
    <div class="portlet-title"> 
     <div class="caption"> 
      <span><i class="glyphicon glyphicon-asterisk"></i> @item.tbl_Unit.Name</span> 
     </div> 
     <div class="tools"> 
      <a href="#" class="collapse"> </a> 
     </div> 
     <div class="actions"> 
      <a href="@Url.Action("Details", "Project", new {ID=item.ID })" class="btn btn-circle default">Details</a> 
     </div> 
    </div> 
    @foreach(var project in unitGroup.ToList()) 
    { 
     <div class="portlet-body"> 
      <span><i class="fa fa-file"></i> @project.Name</span> 
      <span><i class="fa fa-calendar"> Contract Start and End Dates: @(project.ContractStartDate != null ? project.ContractStartDate.Value.ToString("dd.MM.yyyy") : "-")/@(project.ContractEndDate != null ? project.ContractEndDate.Value.ToString("dd.MM.yyyy") : "-")</i></span> 
      <div class="well"> 
       <div class="form-group"> 
        <label>Cash Completion Rate: %@project.CashCompletionRate</label> 
        <div class="progress progress-striped active"> 
         <div class="progress-bar progress-bar-info" role="progressbar" style="width: @(project.CashCompletionRate)%;"></div> 
        </div> 
       </div> 
      </div> 
      <div class="well"> 
       <div class="form-group"> 
        <label>Physical Completion Rate: %@project.PhysicalCompletionRate</label> 
        <div class="progress progress-striped active"> 
         <div class="progress-bar progress-bar-info" role="progressbar" style="width: @(project.PhysicalCompletionRate)%;"></div> 
        </div> 
       </div> 
      </div> 
     </div> 
    } 
</div> 
</div> 

應該有一些錯誤,這裏我不是很familliar與您的模型,但是這應該是它背後的總體思路。

+0

謝謝你的回答,先生。我會試試看。 –