} //json序列号加上OptOut会排除自身列表,不加会排序其它的属性,故通过这个中转 /// <summary> /// 列表 /// </summary> /// <param name="items"></param> /// <param name="page"></param> /// <param name="totalCount"></param> public PageList(IEnumerable <T> items, PageArgument page, int totalCount) { if (totalCount != 0) { this.AddRange(items); //this.List.AddRange(items); } this.Page = page; this.TotalCount = totalCount; this.AllPages = (int)Math.Ceiling(totalCount / (double)page.PageSize); }
/// <summary> /// 当请求页码数大于最大页码数时,重置为最大页码数 /// </summary> /// <param name="page">原分页参数</param> /// <param name="total">数据总条数</param> /// <returns>分页参数</returns> public static PageArgument ToCurrentPage(this PageArgument page, int total) { page = page ?? new PageArgument(); // 获取最大页码数(向上取整) var maxPage = Convert.ToInt32(Math.Ceiling(total / (double)page.PageSize)); // 若当前最大页码数小于前端传入请求页码数时,请求页码数重置为当前最大页码数 if (maxPage < page.PageIndex) { page.PageIndex = maxPage; } return(page); }
/// <summary> /// 获取分页结果 /// </summary> /// <typeparam name="T">数据item类型</typeparam> /// <param name="allItems">IQueryable对象</param> /// <param name="page">分页参数</param> /// <param name="pageIndexRange">超出最大页显示最后一页,默认false</param> /// <param name="sortModels">排序规则</param> /// <returns></returns> public static PageList <T> ToPageList <T>(this IQueryable <T> allItems, PageArgument page, bool pageIndexRange = false, IEnumerable <SortModel> sortModels = null) { page = page ?? new PageArgument(); var itemIndex = (page.PageIndex - 1) * page.PageSize; var pageOfItems = allItems.OrderBy(sortModels).Skip(itemIndex).Take(page.PageSize); var totalItemCount = allItems.Count(); if (totalItemCount <= 0) { return(new PageList <T>()); } if (pageIndexRange) { page.ToCurrentPage(totalItemCount); } return(new PageList <T>(pageOfItems, page, totalItemCount)); }
/// <summary> /// 根据page对象生成Limit字符串_Mysql版 /// </summary> /// <param name="page"></param> /// <returns></returns> public static string ToMySqlLimitSql(this PageArgument page) { page = page ?? new PageArgument(); return($" limit {page.PageSize * (page.PageIndex - 1)},{page.PageSize} "); }