欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > 能源 > C#分页思路:双列表数据组合返回设计思路

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

2025/2/8 9:31:11 来源:https://blog.csdn.net/m0_67412019/article/details/145378845  浏览:    关键词: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

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com