一般使用格式为

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() 的使用方法的更多相关文章

  1. [转]在Entity Framework中使用LINQ语句分页

    本文转自:http://diaosbook.com/Post/2012/9/21/linq-paging-in-entity-framework 我们知道,内存分页效率很低.并且,如果是WebForm ...

  2. Entity Framework Core今日所得:避免 IEnumerable 以及 IQueryable 陷阱

    避免 IEnumerable 以及 IQueryable 陷阱: IEnumerable示用Linq会先去数据库查询所有记录,然后再条件查询. IQueryable接口派生自IEnumerable,但 ...

  3. 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 ...

  4. UWP开发之ORM实践:如何使用Entity Framework Core做SQLite数据持久层?

    选择SQLite的理由 在做UWP开发的时候我们首选的本地数据库一般都是Sqlite,我以前也不知道为啥?后来仔细研究了一下也是有原因的: 1,微软做的UWP应用大部分也是用Sqlite.或者说是微软 ...

  5. 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 ...

  6. 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 ...

  7. Entity Framework Core 1.1 升级通告

    原文地址:https://blogs.msdn.microsoft.com/dotnet/2016/11/16/announcing-entity-framework-core-1-1/ 翻译:杨晓东 ...

  8. Entity Framework Core 1.1 Preview 1 简介

    实体框架核心(EF Core)是Entity Framework的一个轻量级,可扩展和跨平台版本. 10月25日,Entity Framework Core 1.1 Preview 1发布了. 升级到 ...

  9. 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 ...

随机推荐

  1. 认识HDFS分布式文件系统

    1.设计基础目标 (1) 错误是常态,需要使用数据冗余  (2)流式数据访问.数据批量读而不是随机速写,不支持OLTP,hadoop擅长数据分析而不是事物处理.  (3)文件采用一次性写多次读的模型, ...

  2. vue 实战问题-watch 数组或者对象

    1.普通的watch data() { return { frontPoints: 0 } }, watch: { frontPoints(newValue, oldValue) { console. ...

  3. java并发编程(8)原子变量和非阻塞的同步机制

    原子变量和非阻塞的同步机制 一.锁的劣势 1.在多线程下:锁的挂起和恢复等过程存在着很大的开销(及时现代的jvm会判断何时使用挂起,何时自旋等待) 2.volatile:轻量级别的同步机制,但是不能用 ...

  4. DDD学习笔记(一)

    最近开始筹备一个电商项目. 其实是公司的老本行了. 但今年公司希望在做项目的同时, 沉淀出一套针对电商的基础产品. 这样可以提高新项目的开发效率, 减少重复劳动. 那现如今, DDD(领域驱动设计)应 ...

  5. 【转】前端——实用UI组件库

    Angular UI 组件 ngx-bootstrap 是一套Bootstrap 组件 官网:https://valor-software.com/ngx-bootstrap/#/ github: h ...

  6. C# 实现将listview中已经显示的数据导出到Access 数据库

    private void button1_Click(object sender, EventArgs e) { OleDbConnection dbconn = new OleDbConnectio ...

  7. 封装简单的API——微信小程序

    前几天自己琢磨微信小程序的基本开发,里边用到的技术包括WebAPI,也就是方法的封装. 当然也可以用ASP.NET MVC WCF来写接口.更简单应该就是 WinForm 简单易部署. 这里用的是 2 ...

  8. [转] SQL函数说明大全

    from http://www.cnblogs.com/moss_tan_jun/archive/2010/08/23/1806861.html 一旦成功地从表中检索出数据,就需要进一步操纵这些数据, ...

  9. [转] 如何让代码可测试化(C#)

    让代码可测试化 本篇介绍如何把我们目前最常见的代码转换为可以单元测试的代码,针对业务逻辑层来实现可测试性,我们以银行转账为例,通常代码如下: public class TransferControll ...

  10. docker部署ELK日志处理

    docker环境下部署的ELK系统,日志处理,保留最近五个小时的日志 dockerlog.sh #!/bin/bash logs=`find /var/lib/docker/containers/ - ...