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 ...
随机推荐
- JavaScript设计模式-11.桥梁模式
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- PHP之mb_substr使用
mb_substr (PHP 4 >= 4.0.6, PHP 5, PHP 7) mb_substr - Get part of string mb_substr - 获取部分字符串 Descr ...
- SQL SERVER学习2——数据库设计
数据库设计是数据库知识中比较重要的部分,我们需要了解数据库设计的基本步骤,E-R图的画法. 数据库设计的基本概述 检验一个数据库设计好坏的标准就是,看他是否能够方便的执行各种数据检索和处理操作,并且有 ...
- 如鹏网学习笔记(十四)ASP.NET
Asp.net笔记 一.Socket类 进行网络编程的类,可以在两台计算机之间进行网络通讯 过程: 向服务器发送指令: GET /index.html HTTP/1.1 Host:127.0.0.1: ...
- [linux] C语言Linux系统编程-socket回声客户端
回声客户端: 1.所谓“回声”,是指客户端向服务器发送一条数据,服务器再将数据原样返回给客户端,就像声音一样,遇到障碍物会被“反弹回来”. 2.客户端也可以使用 write() / send() 函数 ...
- [linux] shell脚本编程-ubuntu创建vsftpd服务
1. useradd -s /bin/bash -m 用户名 , 创建用户,自动创建家目录 , 设置登录shell 2. echo 用户名:密码 | chpasswd ,非交互式设置密码 3. ...
- 六、阻塞队列LinkedBlockQueue
一.简介 Java提供了FIFO先进先出的阻塞队列实现,这其实是一种生产者消费者理念,可以通过阻塞队列将生产者和消费者进行解耦合. LinkedBlockQueue是一种无界队列,但事实上它只是队列可 ...
- fb登陆遇到傻逼问题
centos中curl需要ssl的支持, 所以我重新安装了curl,并安装了openssl-devel,这个是依赖,必须的. so 完美
- Spark Pregel参数说明
Pregel是个强大的基于图的迭代算法,也是Spark中的一个迭代应用aggregateMessage的典型案例,用它可以在图中方便的迭代计算,如最短路径.关键路径.n度关系等.然而对于之前对图计算接 ...
- bnu 被诅咒的代码
http://www.bnuoj.com/bnuoj/problem_show.php?pid=10792 被诅咒的代码 Time Limit: 1000ms Memory Limit: 65536K ...