学习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 编程系列五——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 编程系列十一——把新字段更新到数据库
学习ASP.NET Core Razor 编程系列十二——在页面中增加校验
学习ASP.NET Core Razor 编程系列十三——文件上传功能(一)
学习ASP.NET Core Razor 编程系列十四——文件上传功能(二)
学习ASP.NET Core Razor 编程系列十五——文件上传功能(三)
学习ASP.NET Core Razor 编程系列十六——排序
在本教程中,我们来学习如何进行分组。
通过前面的教程学习,你可以实现一个简单的书籍管理系统。 在本教程将学习如何创建具有简单分组功能的页面。
一、创建About页面来显示书籍统计信息
在 书籍管理系统的“关于”页上,将显示每个出版社有多少书籍。 这要求在分组上再进行分组和简单计算。 要完成此操作,需要执行以下操作:
- 创建一个视图模型类,该视图类是需要传递到该视图的数据的抽象。
- 修改关于视图。
二、 创建视图模型
- 在Visual Studio 2017的解决方案资源管理器的Model文件夹中创建ViewModels文件夹。

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; } }
}
三、更新“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 上进行分组。
四、修改“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>
五、运行结果
在Visual Studio 2017的中按F5运行应用,并且点击“关于”页面。 表格中会显示每个出版社的书籍计数。

学习ASP.NET Core Razor 编程系列十七——分组的更多相关文章
- 学习ASP.NET Core Razor 编程系列十九——分页
学习ASP.NET Core Razor 编程系列目录 学习ASP.NET Core Razor 编程系列一 学习ASP.NET Core Razor 编程系列二——添加一个实体 学习ASP.NET ...
- 学习ASP.NET Core Razor 编程系列十八——并发解决方案
学习ASP.NET Core Razor 编程系列目录 学习ASP.NET Core Razor 编程系列一 学习ASP.NET Core Razor 编程系列二——添加一个实体 学习ASP.NET ...
- 学习ASP.NET Core Razor 编程系列二——添加一个实体
在Razor页面应用程序中添加一个实体 在本篇文章中,学习添加用于管理数据库中的书籍的实体类.通过实体框架(EF Core)使用这些类来处理数据库.EF Core是一个对象关系映射(ORM)框架,它简 ...
- 学习ASP.NET Core Razor 编程系列四——Asp.Net Core Razor列表模板页面
学习ASP.NET Core Razor 编程系列目录 学习ASP.NET Core Razor 编程系列一 学习ASP.NET Core Razor 编程系列二——添加一个实体 学习ASP.NET ...
- 学习ASP.NET Core Razor 编程系列五——Asp.Net Core Razor新建模板页面
学习ASP.NET Core Razor 编程系列目录 学习ASP.NET Core Razor 编程系列一 学习ASP.NET Core Razor 编程系列二——添加一个实体 学习ASP.NET ...
- 学习ASP.NET Core Razor 编程系列六——数据库初始化
学习ASP.NET Core Razor 编程系列目录 学习ASP.NET Core Razor 编程系列一 学习ASP.NET Core Razor 编程系列二——添加一个实体 学习ASP.NET ...
- 学习ASP.NET Core Razor 编程系列七——修改列表页面
学习ASP.NET Core Razor 编程系列目录 学习ASP.NET Core Razor 编程系列一 学习ASP.NET Core Razor 编程系列二——添加一个实体 学习ASP.NET ...
- 学习ASP.NET Core Razor 编程系列八——并发处理
学习ASP.NET Core Razor 编程系列目录 学习ASP.NET Core Razor 编程系列一 学习ASP.NET Core Razor 编程系列二——添加一个实体 学习ASP.NET ...
- 学习ASP.NET Core Razor 编程系列九——增加查询功能
学习ASP.NET Core Razor 编程系列目录 学习ASP.NET Core Razor 编程系列一 学习ASP.NET Core Razor 编程系列二——添加一个实体 学习ASP.NET ...
随机推荐
- 阅读nsq源码 ---初步架构设计图
- 数据保存策略(Retention Policies)
数据保存策略(Retention Policies) InfluxDB没有提供直接删除Points的方法,但是它提供了Retention Policies.主要用于指定数据的保留时间:当数据超过了指定 ...
- Windows 使用 Visual Studio 编译 caffe
说明:最近看 caffe 发现在 github 上下载的源码没有windows版本的,需要自己生成项目文件才能用 Visual Studio 编译,这里记录一下生成Windows项目文件的方法以及编译 ...
- 【爆料】-《西澳大学毕业证书》UWA一模一样原件
☞西澳大学毕业证书[微/Q:2544033233◆WeChat:CC6669834]UC毕业证书/联系人Alice[查看点击百度快照查看][留信网学历认证&博士&硕士&海归&a ...
- Hibernate-ORM:02.Hibernate增删改入门案例
------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 本笔者使用的是Idea+mysql+maven做Hibernate的博客,本篇及其以后都是如此! 首先写好思路 ...
- 小白学习Python之路---re模块学习和挑战练习
本节大纲: 1.正则表达式 2.re模块的学习 3.速记理解技巧 4.挑战练习--开发一个简单的python计算器 5.心得总结 6.学习建议 正则表达式: 正则表达式,又称规则表达式.(英语:Reg ...
- sau交流学习社区第三方登陆github--oauth来实现用户登录
sau交流学习社区第三方登陆github--oauth来实现用户登录 最近在丰富nodejsBlog开发的“交流学习社区”(https://www.mwcxs.top)的其他功能以及修复一些bug. ...
- Java集合详解8:Java集合类细节精讲
今天我们来探索一下Java集合类中的一些技术细节.主要是对一些比较容易被遗漏和误解的知识点做一些讲解和补充.可能不全面,还请谅解. 本文参考:http://cmsblogs.com/?cat=5 具体 ...
- 『随笔』.Net 底层 数组[] 的 基本设计探秘 512 子数组
static void Main(string[] args) { Console.ReadKey(); //初始化数组 不会立即开辟内存字节, 只有实际给数组赋值时 才会开辟内存 // //猜测数组 ...
- [PHP]引用返回与节省内存
PHP中的引用是什么:1.在 PHP 中引用意味着用不同的名字访问同一个变量内容2.引用可以被看作是 Unix 文件系统中的硬链接. 3.使用unset的话,只是删除他这个名字自身对内容的引用,并没有 ...