DotNetNext / SqlSugar

.Net aot ORM Fastest ORM Simple Easy VB.NET Sqlite orm Oracle ORM Mysql Orm 虚谷数据库 postgresql ORm SqlServer oRm 达梦 ORM 人大金仓 ORM 神通ORM C# ORM , C# ORM .NET ORM NET5 ORM .NET6 ORM ClickHouse orm QuestDb ,TDengine ORM,OceanBase orm,GaussDB orm ,Tidb orm Object/Relational Mapping
https://www.donet5.com/Home/Doc
MIT License
5.35k stars 1.34k forks source link

`ToPageList` 里面的第一个参数, 最好不叫 pageIndex #973

Closed John0King closed 2 years ago

John0King commented 2 years ago

description

C# 所有的索引都是从0开始, 而分页同理是从0开始的, 而分页显示的页码是从1开始的, 这里就有一个混淆: 我们传递的到底是 index (从0开始的) 还是页码(number,从1开始的) , 在这里 SqlSugar 确实要求传递的是 页码 , 而不是索引值, 但是名字极其仍然容易混淆 pageIndex , 乍一看是要求传递索引值, 但其实并不是。

我建议将该参数改名为 pageNumber ,

这里附上我的 PageRequestBase 基类的处理

    /// <summary>
    /// 分页基类
    /// </summary>
    public class PagedRequestBase
    {
        /// <summary>
        /// 分页页码
        /// </summary>
        public virtual int PageNumber
        {
            get
            {
                return PageIndex + 1;
            }
            set
            {
                PageIndex = value < 1 ? 0 : value - 1;
            }
        }

        /// <summary>
        /// 分页索引
        /// </summary>
        public virtual int PageIndex { get; set; } = 0;

        /// <summary>
        /// 页大小
        /// </summary>
        public virtual int PageSize { get; set; } = 20;
    }

需要注意的是, 更改方法的 参数名 是一个 source 级别的 breaking-change eg:

query.ToPageList(pageIndex: 1, pageSize:2, ref total);  //breaking

query.ToPageList(1,2,ref total);  // non-breaking
DotNetNext commented 2 years ago

这个我问一下大家喜欢哪个名字

DotNetNext commented 2 years ago

number对于我个人而言 和size容易混淆

John0King commented 2 years ago

number 代表数字, size 代表大小 , 你怎么会混淆这两个? 🤣

DotNetNext commented 2 years ago

分页数字 : 是第几页,还是每页几条 ,还是有点绕 分页索引:比较清晰的知道 肯定是第几页 ,而不是每页几条

John0King commented 2 years ago

总共有几页: MaxPage PageCount

和 总数 TotalItems TotalCount Total

分页页码: PageNumber Page 分页索引 : PageIndex Page 当前页: CurrentPage CurrentPageNumber 当前索引 CurrentPageIndex 分页大小 : PageSize 分页控件大小: MaxPagerItems

虽然没什么标准, 但是基本上 在分页以页为方式的分页上, PageSize PageNumber/PageIndex 基本上算是个标准了, Index 不管在什么情况下 都应该从0开始, 除非是 VBS 等索引从1开始的语言

DotNetNext commented 2 years ago

后面会修改

DotNetNext commented 2 years ago

已经优化