建站网站 国外,学生简单个人主页模板,雍鑫建设集团网站,html网页制作例子一、应用场景 需要分页查询#xff08;并非全表查载入物理内存再筛选#xff09;#xff0c;返回列表1和列表2叠加的数据时
二、实现方式 列表1必查#xff0c;列表2根据列表1的查询结果决定列表2的分页查询参数
三、示意图及其实现代码
1.示意图 黄色代表list1的数据并非全表查载入物理内存再筛选返回列表1和列表2叠加的数据时
二、实现方式 列表1必查列表2根据列表1的查询结果决定列表2的分页查询参数
三、示意图及其实现代码
1.示意图 黄色代表list1的数据26条绿色代表list2的数据74条蓝色代表分页取数据的情况三种情况list1 / list1list2 / 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 namelist1count列表一的总条数/param/// param namepageIndex前端传入的当前页码/param/// param namepageSize前端传入的每页数据条数/param/// returns/// 返回一个元组/// - pageIndex2第二列表跳过的记录数表示从第二列表的哪个位置开始查询/// - pageSize2第二列表每页的记录数表示第二列表每页需要查询多少条数据/// /returnspublic 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