【C#】使用 LINQ 中的 Skip() 和 Take()进行分页,为什么要分页,分页作用是什么

news2025/1/11 14:26:06

欢迎来到《小5讲堂》
大家好,我是全栈小5。
这是是《C#》序列文章,每篇文章将以博主理解的角度展开讲解,
特别是针对知识点的概念进行叙说,大部分文章将会对这些概念进行实际例子验证,以此达到加深对知识点的理解和掌握。
温馨提示:博主能力有限,理解水平有限,若有不对之处望指正!

在这里插入图片描述

目录

  • 场景
  • 分页方法
    • 效果
    • 代码
  • 分页目的
  • 分页考虑

场景

数据是通过分组查询出来,并且有统计值,这个统计值来源于另外一个表的统计值,
次数分组的数据量不大,最大可能也就在一千或者一万条记录,分组查询速度对性能影响不大。
此时,查询出来的一万条记录,如果都显示在页面,可能对前端渲染有一定性能影响,
因此,可在后端开发语言里进行内存分页。

分页方法

在 C# 中实现分页功能有不同的方法,其中一种常见的做法是使用 LINQ 中的 Skip() 和 Take() 方法。
假设你已经有一个包含所有数据的集合(例如 List),现在要实现一页显示 N 条数据的分页功能。

效果

  • 第一页
    在这里插入图片描述
    在这里插入图片描述
  • 第二页
    在这里插入图片描述
    在这里插入图片描述

代码

// 模拟数据集有1000条,页大小为15
int pageIndex = 1;
int pageSize = 15;
List<string> list = new List<string>();
for (int i = 1; i < 1000; i++)
{
    list.Add(Guid.NewGuid().ToString());
}
var data = list.Where(value => value.ToLower().Contains('a')).ToList();
var pageData = data.Skip((pageIndex++ - 1) * pageSize).Take(pageSize).ToList();
var pageData2 = data.Skip((pageIndex++ - 1) * pageSize).Take(pageSize).ToList();

分页目的

上面仅仅是举个简单例子,在实际场景中,针对内存操作的数据会遇到更复杂的情况,此时用这个分页也能起到不错的效果。

  • 为什么要分页
    在处理大数据量时,将所有数据一次性加载到内存中可能会导致性能和资源方面的问题。
    分页是一种常见的解决方法,它将数据划分为若干页,每页只加载一部分数据,以减少内存消耗和提高性能
  • 以下是数据分页的几个原因
  1. 提高性能
    当数据量非常庞大时,一次性加载所有数据可能会导致性能下降。通过分页,只加载当前页所需的数据,可以提高程序的响应速度和查询效率。
  2. 减少内存消耗
    将大量数据一次性加载到内存中可能会占用大量的系统资源和内存空间。通过分页,只加载当前页的数据,可以减少内存消耗,并使内存使用更高效。
  3. 改善用户体验
    分页功能可以将大量数据划分为多个页面,每次只显示一页的数据,使用户可以更方便地浏览和导航数据。
  4. 降低数据库压力
    数据库通常是存储和管理数据的主要组件。通过使用分页,只查询当前页所需的数据,可以减轻数据库的负担,提高数据库的性能和响应能力。

因此,对于大数据集合或数据库查询结果,使用分页可以解决性能和资源问题,提高程序的效率和用户体验

分页考虑

决定何时考虑分页或分库分表的关键因素是具体的应用场景和业务需求。
不同数据库的性能和可扩展性也可能会有所不同。

  • 以下是一些常见的考虑因素
    1.数据量
    数据量的增加会对查询性能产生影响。当数据量逐渐增大并且查询性能开始变差时,考虑使用分页或分库分表来提高查询效率。
    2.用户需求
    如果业务要求对大量数据进行快速、即时的分页访问,那么分页是一个合理的选择。
    3.查询响应时间
    当查询响应时间超过用户可接受的范围,例如查询时间过长导致用户等待时间过长时,可以考虑使用分页或其他优化技术。
    4.数据库负载
    当数据库负载过高,无法满足用户请求时,可以考虑使用分库分表来平衡负载。
    5.数据增长趋势
    如果数据的增长速度很快,并且预计将来会有更大的数据量,可以提前规划并考虑分页或分库分表的方案。

分页和分库分表都是一种性能优化的手段,具体业务具体分析。
最佳做法是进行性能测试和监测,了解数据库的性能瓶颈和瓶颈出现的数据量级。
根据具体情况和需求,评估是否需要采取分页、分库分表或其他性能优化措施。

总结:温故而知新,不同阶段重温知识点,会有不一样的认识和理解,博主将巩固一遍知识点,并以实践方式和大家分享,若能有所帮助和收获,这将是博主最大的创作动力和荣幸。也期待认识更多优秀新老博主。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1375011.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Demo: 给图片添加自定义水印并下载

给图片添加自定义水印并下载 <template><div class"wrap"><div class"optea"><div class"file-upload"><p>选择图片</p><el-button type"text" style"color: #c00;"><label f…

可狱可囚的爬虫系列课程 11:Requests中的SSL

一、SSL 证书 SSL 证书是数字证书的一种&#xff0c;类似于驾驶证、护照、营业执照等的电子副本。SSL 证书也称为 SSL 服务器证书&#xff0c;因为它是配置在服务器上。 SSL 证书是由受信任的数字证书颁发机构 CA 在验证服务器身份后颁发的&#xff0c;其具有服务器身份验证和…

小程序基础学习(事件处理)

概述&#xff1a;点击某一个标题&#xff0c;使标题选中增加不同颜色。 <!--pages/four/four.wxml--> <navigation-bar title"牧原" back"{{false}}" color"black" background"#FFF"></navigation-bar> <view c…

WPF XAML(一)

一、XAML的含义 问&#xff1a;XAML的含义是什么&#xff1f;为什么WPF中会使用XAML&#xff1f;而不是别的&#xff1f; 答&#xff1a;在XAML是基于XML的格式&#xff0c;XML的优点在于设计目标是具有逻辑性易读而且简单内容也没有被压缩。 其中需要提一下XAML文件在 Visu…

WindowsServer安装mysql最新版

安装 下载相应mysql安装包&#xff1a; MySQL :: Download MySQL Installer 选择不登陆下载 双击运行下载好的mysql-installer-community-*.*.*.msi 进入类型选择页面&#xff0c;本人需要mysql云服务就选择了server only server only&#xff08;服务器&#xff09;&#x…

x-cmd pkg | lf - 终端文件管理器

目录 简介首次用户技术特点竞品和相关作品进一步阅读 简介 lf 是一款功能强大的终端文件管理器&#xff0c;通过快捷键和类似 Vim 的键绑定来完成快速导航和文件操作。 其高度可定制性和扩展功能&#xff0c;可以满足高级用户的需求。 首次用户 使用 x env use lf 即可自动下…

C++ Primer 6.2参数传递 知识点+练习题

C Primer 6.2参数传递 知识点练习题 指针形参使用引用拷贝Const 形参实参尽量使用常量引用数组形参数组引用形参传递多维数组向main函数传参数含有可变形参的函数练习题待更新 指针形参 void reset(int *p) {*p0;//p指向的整型对象变为0p0;//只是对形参改变p&#xff0c;使其为…

【排序】归并排序(C语言实现)

文章目录 1. 递归版的归并排序1.1 归并排序的思想2. 递归版的归并排序的实现 2. 非递归版的归并排序 1. 递归版的归并排序 1.1 归并排序的思想 归并排序&#xff08;MERGE - SORT&#xff09;是建立在归并操作上的一种有效的排序算法, 该算法是采用分治法&#xff08;Divide a…

【Harmony OS - 消息通知】

应用可以通过接口发送通知消息&#xff0c;提醒用户关注应用中的变化。用户可以在通知栏查看和操作通知内容&#xff0c;通常用于当应用处于后台时&#xff0c;发送&#xff0c;本文主要来介绍在Harmony OS中的三种消息通知。 基础通知 总体流程有三步&#xff1a; 导入noti…

Qt 窗口阴影边框

环境&#xff1a;Qt 5.15 VS2019 方法一&#xff1a;QGraphicsDropShadowEffect 实现方法参考链接&#xff1a;https://blog.csdn.net/goforwardtostep/article/details/99549750 使用此方法添加窗口阴影&#xff0c;会出现警告信息&#xff1a; 且窗口最大化与还原切换时会…

facebook广告的基础知识与类型

Facebook广告是在Facebook平台上展示的一种数字广告形式&#xff0c;它允许广告主通过定位特定的受众群体来推广他们的产品、服务或品牌。以下是一些关于Facebook广告的基础知识&#xff1a; 支持Facebook广告的卡、556150、532959&#xff0c;点击获取 广告形式&#xff1a; …

【排序算法】三、选择排序(C/C++)

「前言」文章内容是排序算法之选择排序的讲解。&#xff08;所有文章已经分类好&#xff0c;放心食用&#xff09; 「归属专栏」排序算法 「主页链接」个人主页 「笔者」枫叶先生(fy) 目录 选择排序1.1 原理1.2 代码实现&#xff08;C/C&#xff09;1.3 优化1.3 特性总结 选择排…

SpringBoot外部配置文件

✅作者简介&#xff1a;大家好&#xff0c;我是Leo&#xff0c;热爱Java后端开发者&#xff0c;一个想要与大家共同进步的男人&#x1f609;&#x1f609; &#x1f34e;个人主页&#xff1a;Leo的博客 &#x1f49e;当前专栏&#xff1a; 循序渐进学SpringBoot ✨特色专栏&…

232Modbus转Profinet应用案例分享

现场需求&#xff1a;现场需要将多台伺服接到控制器&#xff08;1200PLC&#xff09;上&#xff0c;用Modbus协议。 根据现场的描述&#xff0c;我们给出一个方案&#xff0c;在PLC和伺服中间加入232Modbus转Profinet&#xff08;XD-PNR200&#xff09;网关&#xff0c;232Modb…

【PaperReading】2. MM-VID

Category Content 论文题目 MM-VID: Advancing Video Understanding with GPT-4V(ision) 作者 Kevin Lin, Faisal Ahmed, Linjie Li, Chung-Ching Lin, Ehsan Azarnasab, Zhengyuan Yang, Jianfeng Wang, Lin Liang, Zicheng Liu, Yumao Lu, Ce Liu, Lijuan Wang (Microso…

使用pygame.draw绘制基本图形

import pygame# 初始化pygame pygame.init()# 创建显示窗口 screen pygame.display.set_mode((640, 480)) pygame.display.set_caption("绘制基本图形")# 定义颜色 BLACK (0, 0, 0) WHITE (255, 255, 255) RED (255, 0, 0) GREEN (0, 255, 0) BLUE (0, 0, 255)…

centos7下升级nginx1.8.0版本到nginx1.25.3版本

1、指定目录下载安装包 wget http://nginx.org/download/nginx-1.25.3.tar.gz 2、重命名老版本nginx目录 cd /usr/local/ mv nginx nginx_1.8.0 3、解压更新版本的压缩包 tar -zxvf nginx-1.25.3.tar.gz 4、进入nginx安装包目录下执行如下命令检测系统环境 --with-stream: 添…

【Docker】Docker安装入门教程及基本使用

&#x1f389;&#x1f389;欢迎来到我的CSDN主页&#xff01;&#x1f389;&#x1f389; &#x1f3c5;我是Java方文山&#xff0c;一个在CSDN分享笔记的博主。&#x1f4da;&#x1f4da; &#x1f31f;推荐给大家我的专栏《Docker实战》。&#x1f3af;&#x1f3af; &…

数据库用户密码修改时间和密码加密值查询(DM8:达梦数据库)

DM8:达梦数据库用户密码加密值查询 环境介绍1 查询达梦数据库密码修改时间与加密值2 查询数据库密码相同的用户3 达梦数据库学习使用列表 环境介绍 要查询用户密码修改时间,用第一个sql;要查询哪些数据库用户密码是一样的,用第二个sql;若忘记达梦数据库用户密码,1 可以试错,2 …

使用 Ant Design Pro 的图表(展示cpu、内存、硬盘)

文章目录 使用 Ant Design Pro 的图表&#xff08;展示cpu、内存、硬盘&#xff09;一、Ant Design Charts 图表二、快速上手三、ant design chart 图表类型StatisticCard 指标卡结合 Ant Design Charts 图表库丰富数值内容&#xff0c;满足大多数数值展示的场景什么是水波图&a…