C#/Entity Frame Core 使用Linq 进行分页 .Skip() .Take() 的使用方法
一般使用格式为
int pagesize = 分页大小(每一页大小)
int pageindex = 第几页(一般这个变量是随循环递增的)
使用方法
.Skip(pagesize*pageindex).Take(pagesize)
.Skip() 忽略数,表示从哪里开始分页
.Take() 表示每一页截取多少个记录
注意 ,数列是从0开始的,也就是说,第一个是 0,第二个是 1 ... ...
以上方法结合,截取的只是一页,需要在循环中使用,不断截取下一页
例如
{1,2,3,4,5,6,7,8,9,10}
.Skip().Take() //忽略5个数,即从第(5+1)个数开始截!共截取4个
输出 6,7,8,9
再来看看另一个例子
List<string> Name = new List<string> {
"张三1","李四2","王朝3","马汉4","张龙5", "赵虎6","王喜7","是谁8","卢小鱼9", "哈哈10","杀敌数11"
};
var item1 = Name.Skip().Take();
foreach (var i in item1)
{
Console.WriteLine(i);
}
输出
赵虎6
王喜7
是谁8
卢小鱼9
Skip(5),不是指从第 5 个开始截,而是指 忽略前面的 5 个
这样理解了吧?
但是,前面的例子,只能截取一段区间的内容,不算分页。下面给出简单的分页例子。
在C# 控制台中的写法(为了便于理解,请复制到你的VS中运行测试)
using System;
using System.Collections.Generic;
using System.Linq; namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
List<string> Name = new List<string> { //数据
"张三1","李四2","王朝3","马汉4","张龙5", "赵虎6","王喜7","是谁8","卢小鱼9", "大侠","超人"
};
int pagesize = ; //每一页的个数
for (int i = ; i * pagesize < Name.Count; i++) //i 默认值为 0,用 i 表示页数
{
var items = Name.Skip(i * pagesize).Take(pagesize); //截取第 i 页
Console.WriteLine($"第{i + 1}页");
foreach (var item in items) //输出每一页的内容
{
Console.WriteLine(" " + item);
}
}
Console.ReadKey();
} }
}
输出
第1页
张三1
李四2
王朝3
马汉4
第2页
张龙5
赵虎6
王喜7
是谁8
第3页
卢小鱼9
哈哈10
杀敌数11
那么,怎么在 ASP.NET Core/Entity Frame Core 中应用呢?
假设 有一个新闻列表页面,如下

我的思路是,
每次只截取一页,用户点击第几页,就截第几页的列表。
这样省去了循环、算法实现的复杂性。
例子
/// <summary>
/// 获取第 pageIndex 页的新闻列表
/// </summary>
/// <param name="pageSize">每一页的大小</param>
/// <param name="pageIndex">第几页</param>
public IEnumerable<News> Test(int pageSize,int pageIndex)
{
var NewsLists = _db.News.ToList(); //从数据库中获取 News表的数据
var items = NewsLists.Skip(pageSize * (pageIndex - )).Take(pageSize); //第几页的列表
return items;
}
当然,上面的例子,只是简单地截取了一页,并返回一个对象。未对数据进行任何处理。
如果你要,一次性获取数据后,对数据分页用一个分页后的列表,这是很麻烦的。
把数据假设为一维,分页后的数据相当于二维。
有时也不一定需要一下子查看所有的列表,当数据要分成成白上千时,而用户只看了一页~~~~~。
------------
本人是刚刚入门地菜鸟,水平有限,恳请批评。
C#/Entity Frame Core 使用Linq 进行分页 .Skip() .Take() 的使用方法的更多相关文章
- [转]在Entity Framework中使用LINQ语句分页
本文转自:http://diaosbook.com/Post/2012/9/21/linq-paging-in-entity-framework 我们知道,内存分页效率很低.并且,如果是WebForm ...
- Entity Framework Core今日所得:避免 IEnumerable 以及 IQueryable 陷阱
避免 IEnumerable 以及 IQueryable 陷阱: IEnumerable示用Linq会先去数据库查询所有记录,然后再条件查询. IQueryable接口派生自IEnumerable,但 ...
- Working with Data » Getting started with ASP.NET Core and Entity Framework Core using Visual Studio » 排序、筛选、分页以及分组
Sorting, filtering, paging, and grouping 7 of 8 people found this helpful By Tom Dykstra The Contoso ...
- UWP开发之ORM实践:如何使用Entity Framework Core做SQLite数据持久层?
选择SQLite的理由 在做UWP开发的时候我们首选的本地数据库一般都是Sqlite,我以前也不知道为啥?后来仔细研究了一下也是有原因的: 1,微软做的UWP应用大部分也是用Sqlite.或者说是微软 ...
- ASP.NET Core 入门教程 8、ASP.NET Core + Entity Framework Core 数据访问入门
一.前言 1.本教程主要内容 ASP.NET Core MVC 集成 EF Core 介绍&操作步骤 ASP.NET Core MVC 使用 EF Core + Linq to Entity ...
- ASP.NET Core 入门笔记9,ASP.NET Core + Entity Framework Core 数据访问入门
一.前言 1.本教程主要内容 ASP.NET Core MVC 集成 EF Core 介绍&操作步骤 ASP.NET Core MVC 使用 EF Core + Linq to Entity ...
- Entity Framework Core 1.1 升级通告
原文地址:https://blogs.msdn.microsoft.com/dotnet/2016/11/16/announcing-entity-framework-core-1-1/ 翻译:杨晓东 ...
- Entity Framework Core 1.1 Preview 1 简介
实体框架核心(EF Core)是Entity Framework的一个轻量级,可扩展和跨平台版本. 10月25日,Entity Framework Core 1.1 Preview 1发布了. 升级到 ...
- Working with Data » Getting started with ASP.NET Core and Entity Framework Core using Visual Studio » 更新关系数据
Updating related data¶ 7 of 7 people found this helpful The Contoso University sample web applicatio ...
随机推荐
- maven子模块转化成project
把maven多模块中的子模块单独形成一个eclipse的project,需要使用导入 选中子模块,右键选择Import... 在选择弹出框中选择Maven--Existing Maven Projec ...
- Ruby(1):入门
安装: 一般来说linux会自动装ruby,可以通过: ruby -v 来查看ruby版本 直接使用ruby命令的话,是用来执行ruby文件的.如果要打开交互式ruby解释器.只需要在控制台输入:ir ...
- Linux du查询文件大小
#查询磁盘当前容量信息 $df -h #查询当前目录下所有文件的大小 $du -m . #两种方式查询 仅当前目录下的子文件(文件夹)大小 $du -sh /cloud/* $du -h ...
- [转]Vue.js 目录结构
本文转自:http://www.runoob.com/vue2/vue-directory-structure.html 上一章节中我们使用了 npm 安装项目,我们在 IDE(Eclipse.Ato ...
- 如鹏网学习笔记(五)MySql基础
MySQL基础 一.数据库概念 1,网友装备信息.论坛帖子信息.QQ好友关系信息.学籍管理系统中的学生信息等都要“持久化”的保存到一个地方, 如果通过IO写到文件中,那么会非常麻烦,而且不利于多人共享 ...
- C# 调用C++DLL 类型转换
内容转自网上····这里做 备份··· 原文链接: http://blog.csdn.net/miss_easy/article/details/52470964 /C++中的DLL函数原型为 //e ...
- Ajax 之XMLHttpRequest讲解
一直以来都听别人说Ajax,今天终于接触到了.......... 一.什么是Ajax? 答: AJAX即“Asynchronous Javascript And XML”(异步JavaScript和X ...
- 51NOD1965:奇怪的式子
传送门 拆开变成 \[\prod_{i=1}^{n}\sigma_0(i)^{\mu(i)}\prod_{i=1}^{n}\sigma_0(i)^{i}\] 考虑 \(\prod_{i=1}^{n}\ ...
- TAT
瞎扯 继\(HNOI,\)学科\(,CTSC, APIO\)连续爆炸之后 曾一度的怀疑人生,没有任何搞学习的欲望 不断的反省自己:我为什么这么菜? 然后回去搞学科,一直处于一个颓废的状态 后来得知\( ...
- Creating dynamic/configurable parameterized queries in Entity Framework
https://dillieodigital.wordpress.com/2013/05/09/creating-dynamicconfigurable-parameterized-queries-i ...