You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#/.NET网站分页URL生成需求:首页22条,后续每页24条

分页索引计算逻辑与类库推荐

一、索引计算逻辑

直接按页码分两种情况处理,无需单独拆分首页后再处理剩余内容,逻辑简洁清晰:

  • 页码为1时:
    起始索引固定为0,结束索引取21和总记录数-1中的较小值(确保不超出实际记录范围),对应首页22条结果。
  • 页码≥2时:
    起始索引 = 22 + (当前页码-2)*24(即首页22条加上前面所有非首页的总条数);
    结束索引取起始索引+23和总记录数-1中的较小值(对应每页24条结果,同时避免超出总记录范围)。

C#代码实现示例

public (int PageNumber, int StartIndex, int EndIndex) GetPageIndices(int pageNumber, int totalRecords)
{
    if (pageNumber < 1)
        throw new ArgumentOutOfRangeException(nameof(pageNumber), "页码不能小于1");

    int startIndex, endIndex;
    if (pageNumber == 1)
    {
        startIndex = 0;
        endIndex = Math.Min(21, totalRecords - 1);
    }
    else
    {
        startIndex = 22 + (pageNumber - 2) * 24;
        if (startIndex >= totalRecords)
            throw new ArgumentOutOfRangeException(nameof(pageNumber), "该页码无对应数据");
        
        endIndex = Math.Min(startIndex + 23, totalRecords - 1);
    }

    return (pageNumber, startIndex, endIndex);
}

URL生成示例

调用上述方法后,直接拼接字符串即可生成目标格式的URL:

var pageData = GetPageIndices(3, 100);
string url = $"/result-set/{pageData.PageNumber}/{pageData.StartIndex}/{pageData.EndIndex}";
// 输出:"/result-set/3/46/69"(符合每页24条的逻辑)

二、推荐分页类库

推荐两款不依赖Entity Framework的轻量分页类库:

  • PagedList.Core:专注于内存集合或任意IEnumerable<T>数据源的分页,支持分页数据获取、总页数计算、导航参数生成等核心功能,无需绑定特定ORM,集成简单。
  • X.PagedList.Core:与PagedList.Core功能类似,提供更灵活的分页扩展方法,可直接对集合调用分页方法,快速获取分页后的数据集及分页元数据。

内容的提问来源于stack exchange,提问作者Username_null

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 01:52:42