學習ASP.NET Core Razor 編程系列目錄html
學習ASP.NET Core Razor 編程系列二——添加一個實體編程
學習ASP.NET Core Razor 編程系列三——建立數據表及建立項目基本頁面併發
學習ASP.NET Core Razor 編程系列四——Asp.Net Core Razor列表模板頁面app
學習ASP.NET Core Razor 編程系列五——Asp.Net Core Razor新建模板頁面async
學習ASP.NET Core Razor 編程系列六——數據庫初始化ide
學習ASP.NET Core Razor 編程系列七——修改列表頁面post
學習ASP.NET Core Razor 編程系列八——併發處理學習
學習ASP.NET Core Razor 編程系列九——增長查詢功能this
學習ASP.NET Core Razor 編程系列十——添加新字段
學習ASP.NET Core Razor 編程系列十一——把新字段更新到數據庫
學習ASP.NET Core Razor 編程系列十二——在頁面中增長校驗
學習ASP.NET Core Razor 編程系列十三——文件上傳功能(一)
學習ASP.NET Core Razor 編程系列十四——文件上傳功能(二)
學習ASP.NET Core Razor 編程系列十五——文件上傳功能(三)
學習ASP.NET Core Razor 編程系列十六——排序
在本教程中,咱們來學習如何進行分組。
經過前面的教程學習,你能夠實現一個簡單的書籍管理系統。 在本教程將學習如何建立具備簡單分組功能的頁面。
1、建立About頁面來顯示書籍統計信息
在 書籍管理系統的「關於」頁上,將顯示每一個出版社有多少書籍。 這要求在分組上再進行分組和簡單計算。 要完成此操做,須要執行如下操做:
2、 建立視圖模型
2. 在新的文件夾中,添加EnrollmentPublishGroup.cs類文件,而且寫下代碼:
using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace RazorMvcBooks.Models.ViewModels { public class EnrollmentPublishGroup { public string Publish { get; set; } public int BooksCount { get; set; } } }
3、更新「About」頁面模型
在Visual Studio 2017的解決方案資源管理器的,找到 Pages/About.cshtml.cs 文件,而且修改代碼以下:
using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Microsoft.EntityFrameworkCore; using Microsoft.AspNetCore.Mvc.RazorPages; using RazorMvcBooks.Models.ViewModels; namespace RazorMvcBooks.Pages { public class AboutModel : PageModel { public string Message { get; set; } public async Task OnGetAsync() { Message = "Your application description page."; IQueryable<EnrollmentPublishGroup> data = from book in _context.Book group book by book.Publishing into publishGroup select new EnrollmentPublishGroup() { Publish = publishGroup.Key, BooksCount = publishGroup.Count() }; BookGroup = await data.AsNoTracking().ToListAsync(); } private readonly RazorMvcBooks.Models.BookContext _context; public AboutModel(RazorMvcBooks.Models.BookContext context) { _context = context; } public IList<EnrollmentPublishGroup> BookGroup { get; set; } } }
LINQ 語句按出版社對書籍實體進行分組,計算每組中實體的數量,並將結果存儲在 EnrollmentPublishGroup 視圖模型對象的集合中。
注意:EF Core 當前不支持 LINQ group 命令。 在上述代碼中,全部學生記錄均從 SQL Server 返回。 group 命令應用於 Razor 頁面應用,而不是應用於 SQL Server。 EF Core 2.1 支持此 LINQ group 運算符,並在 SQL Server 上進行分組。
4、修改「About」Razor 頁面
在Visual Studio 2017的解決方案資源管理器的找到 Pages/About.cshtml 文件中的代碼替換爲如下代碼:
@page @model AboutModel @{ ViewData["Title"] = "書籍統計信息"; } <h2>@ViewData["Title"]</h2> <h3>@Model.Message</h3> <p>Use this area to provide additional information.</p> <h2>書籍統計信息</h2> <table> <tr> <th> 出版社 </th> <th> 書籍數量 </th> </tr> @foreach (var item in Model.BookGroup) { <tr> <td> @Html.DisplayFor(modelItem => item.Publish) </td> <td align="right"> @item.BooksCount </td> </tr> } </table>
5、運行結果
在Visual Studio 2017的中按F5運行應用,而且點擊「關於」頁面。 表格中會顯示每一個出版社的書籍計數。