我有辦公室的請求清單。
模型:
public class Request
{
public int Id { get; set; }
public DateTime Created { get; set; }
public string Office { get; set; } = "";
public string Status { get; set; } = "";
}
控制器:
public IActionResult Requests(int id)
{
var requests = _repo.GetAllRequests();
return View(requests);
}
存盤庫:
public List<Request> GetAllRequests()
{
return _ctx.Requests.ToList();
}
看法:
@model IEnumerable<Request>
<table>
<thead>
<tr>
<th>Date</th>
<th>Status</th>
<th>Office</th>
</tr>
</thead>
<tbody>
@foreach (var request in Model)
{
<tr>
<th>@request.Created.ToString()</th>
<th>@request.Status</th>
<th>@request.Office</th>
</tr>
}
</tbody>
</table>
我需要一個函式來計算來自每個辦公室的請求數量。例如,我有一張桌子:
date-status-office:
18feb-opened-101
18feb-opened-102
18feb-closed-103
18feb-opened-101
18feb-opened-101
18feb-closed-103
結果應該是:
101: 3 requests
103: 2 requests
102: 1 request
以防萬一,這是一個圖形解釋:

如何顯示每個辦公室的總請求?
uj5u.com熱心網友回復:
您可以使用GroupBy()對請求進行分組Office并計算每個組的計數。在控制器中,你可以做這樣的事情,它回傳一個匿名物件:
var requests = _repo.GetAllRequests();
var groupedRequests = requests.GroupBy(r => r.Office)
.Select(g => new { Office = g.Key, Count = g.Count() });
在視圖中,它將類似于:
@{
var groupedRequests = Model.GroupBy(r => r.Office)
.Select(g => new { Office = g.Key, Count = g.Count() });
}
...
// display however you want
@foreach (var request in groupedRequests)
{
<div>
@request.Office: @request.Count requests
</div>
}
但是,請考慮創建一個視圖模型來保存您的Request資料:
public class ViewModel
{
public List<Request> Requests { get; set; }
public List<RequestSummary> RequestSummaries { get; set; }
}
public class RequestSummary
{
public string Office { get; set; }
public int Count { get; set; }
}
然后在控制器中,您將創建一個RequestSummary而不是匿名物件:
public IActionResult Requests(int id)
{
var requests = _repo.GetAllRequests();
var summaries = requests.GroupBy(r => r.Office)
.Select(g => new RequestSummary
{
Office = g.Key,
Count = g.Count()
})
.ToList();
var viewModel = new ViewModel();
viewModel.Requests = requests;
viewModel.RequestSummaries = summaries;
return View(viewModel);
}
Model.Requests使用和更新視圖中的模型參考并顯示資料Model.RequestSummaries:
@model ViewModel
...
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/428782.html
標籤:C# asp.net-mvc asp.net 核心
