当前位置: 首页 > news >正文

C#分页思路:双列表数据组合返回设计思路

一、应用场景

        需要分页查询(并非全表查载入物理内存再筛选),返回列表1和列表2叠加的数据

二、实现方式

        列表1必查,列表2根据列表1的查询结果决定列表2的分页查询参数

三、示意图及其实现代码

1.示意图

        黄色代表list1的数据(26)条,绿色代表list2的数据(74条),蓝色代表分页取数据的情况(三种情况:list1  /   list1+list2   / list2 )

2.实现代码

public class Program
{public static void Main(){// 示例数据int list1count = 26;  // list1 的总条数int pageIndex = 1;    // 当前页码int pageSize = 20;    // 每页大小GetPaginationData(list1count, 1, pageSize);GetPaginationData(list1count, 2, pageSize);GetPaginationData(list1count, 3, pageSize);GetPaginationData(list1count, 4, pageSize);GetPaginationData(list1count, 5, pageSize);}/// <summary>/// 获取第二列表分页参数的方法/// </summary>/// <remarks>/// 该方法用于处理分页查询时,列表一和列表二组合数据返回的场景,/// 根据列表一的总条数和分页信息,计算并确定列表二的分页参数。/// </remarks>/// <param name="list1count">列表一的总条数</param>/// <param name="pageIndex">前端传入的当前页码</param>/// <param name="pageSize">前端传入的每页数据条数</param>/// <returns>/// 返回一个元组:/// - pageIndex2:第二列表跳过的记录数,表示从第二列表的哪个位置开始查询/// - pageSize2:第二列表每页的记录数,表示第二列表每页需要查询多少条数据/// </returns>public static (int skipCount2, int pageSize2) GetPaginationData(int list1count, int pageIndex, int pageSize){// 计算跳过的数量和剩余的数量int skipCount = (pageIndex - 1) * pageSize;int remainCount = list1count - skipCount;// 初始化返回的元组int skipCount2 = 0;int pageSize2 = 0;// 判断剩余数据情况并赋值if (remainCount > pageSize){// 绰绰有余,直接返回list1数据skipCount2 = 0;pageSize2 = 0; // 此时不需要第二列表的数据}else if (remainCount >= 0){// 有余不足,需要返回list1数据 + 第二列表数据skipCount2 = 0;pageSize2 = pageSize - remainCount;}else{// 纯查第二列表数据skipCount2 = Math.Abs(remainCount);pageSize2 = pageSize;}// 输出调试信息Console.WriteLine($"【pageIndex入参】{pageIndex}【skipCount2】{skipCount2},【pageSize】{pageSize2}");// 返回最终结果return (skipCount2, pageSize2);}
}

3.结果

【pageIndex入参】1【skipCount2】0,【pageSize】0
【pageIndex入参】2【skipCount2】0,【pageSize】14
【pageIndex入参】3【skipCount2】14,【pageSize】20
【pageIndex入参】4【skipCount2】34,【pageSize】20
【pageIndex入参】5【skipCount2】54,【pageSize】20

http://www.lryc.cn/news/527983.html

相关文章:

  • 中科大:LLM检索偏好优化应对RAG知识冲突
  • 知识库管理系统提升企业知识价值与工作效率的实践路径分析
  • 中文输入法方案
  • 《AI芯片:如何让硬件与AI计算需求完美契合》
  • AlertDialog组件的功能与用法
  • 【Python百日进阶-Web开发-FastAPI】Day813 - FastAPI 响应模型
  • 洛谷U525376 信号干扰 (判断多个区间是否有重叠)
  • ESP32-S3模组上跑通esp32-camera(35)
  • Java进阶(二):Java设计模式
  • DeepSeek R1:中国AI黑马的崛起与挑战
  • 抗体人源化服务如何优化药物的分子结构【卡梅德生物】
  • AndroidCompose Navigation导航精通2-过渡动画与路由切换
  • 基于微信小程序的社团活动助手php+论文源码调试讲解
  • WebSocket 详解:全双工通信的实现与应用
  • 漏洞修复:Apache Tomcat 安全漏洞(CVE-2024-50379) | Apache Tomcat 安全漏洞(CVE-2024-52318)
  • 智慧园区系统分类及其在提升企业管理效率中的创新应用探讨
  • 29. 【.NET 8 实战--孢子记账--从单体到微服务】--项目发布
  • Langchain+讯飞星火大模型Spark Max调用
  • TensorFlow实现逻辑回归模型
  • C++进阶课程第2期——排列与组合1
  • C++17 std::variant 详解:概念、用法和实现细节
  • Leetcode::119. 杨辉三角 II
  • 多模态论文笔记——TECO
  • Ubuntu 16.04用APT安装MySQL
  • Linux 4.19内核中的内存管理:x86_64架构下的实现与源码解析
  • JavaScript逆向高阶指南:突破基础,掌握核心逆向技术
  • 嵌入式知识点总结 Linux驱动 (四)-中断-软硬中断-上下半部-中断响应
  • 在ubuntu下一键安装 Open WebUI
  • c语言网 1127 尼科彻斯定理
  • Cloudflare通过代理服务器绕过 CORS 限制:原理、实现场景解析