Exemple #1
0
 }                                                                   //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);
        }
Exemple #3
0
        /// <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} ");
 }