• IQueryable简单分页的扩展方法


    IQueryable简单分页的扩展方法 ,废话不多说,直接上干货!

    /// <summary>
        /// 分页列表
        /// </summary>
        public class Page<T>
        {
            public Page()
            {
    
            }
            public Page(List<T> items, int pageIndex, int pageSize, int totalCount)
            {
                PageIndex = pageIndex;
                PageSize = pageSize;
                Total = totalCount;
                PageTotal = (int)Math.Ceiling(totalCount / (double)pageSize);
                Items = items;
            }
    
            /// <summary>
            /// 当前页码
            /// </summary>
            public int PageIndex { get; set; }
    
            /// <summary>
            /// 每页记录数
            /// </summary>
            public int PageSize { get; set; }
    
            /// <summary>
            /// 总记录数
            /// </summary>
            public int Total { get; set; }
    
            /// <summary>
            /// 总页数
            /// </summary>
            public int PageTotal { get; set; }
    
            /// <summary>
            /// 分页数据
            /// </summary>
            public List<T> Items { get; set; }
        }
    

      

    public static class PagedListExtensions
        {
            /// <summary>
            /// PagedList
            /// </summary>
            /// <param name="query"></param>
            /// <param name="pageIndex">1为起始页</param>
            /// <param name="pageSize"></param>
            /// <param name="cancellationToken"></param>
            public static async Task<Page<T>> ToPagedListAsync<T>(
                this IQueryable<T> query,
                int pageIndex,
                int pageSize,
                CancellationToken cancellationToken = default)
            {
                if (pageIndex < 1) throw new ArgumentOutOfRangeException(nameof(pageIndex));
                int realIndex = pageIndex - 1;
                int count = await query.CountAsync(cancellationToken).ConfigureAwait(false);
                var items = await query.Skip(realIndex * pageSize)
                                       .Take(pageSize)
                                       .ToListAsync(cancellationToken)
                                       .ConfigureAwait(false);
                return new Page<T>(items, pageIndex, pageSize, count);
            }
    
            public static Page<T> ToPagedList<T>(
                this IQueryable<T> query,
                int pageIndex,
                int pageSize)
            {
                if (pageIndex < 1) throw new ArgumentOutOfRangeException(nameof(pageIndex));
                int realIndex = pageIndex - 1;
                int count = query.Count();
                var items = query.Skip(realIndex * pageSize)
                                 .Take(pageSize)
                                 .ToList();
                return new Page<T>(items, pageIndex, pageSize, count);
            }
        }
    

      

  • 相关阅读:
    详解Javascript匿名函数的使用 转载自IT EYE Blog
    漂亮、免费和响应式HTML5网站模板 转
    Truth, Equality and JavaScript
    Ember.js 示例
    UX Pin 一款在线界面设计网站
    关于工资的三个秘密
    Semantic Versioning 如何进行版本管理
    CSSS CSS幻灯片
    oracle 导入数据报600错误
    Android 初步Android文件目录介绍
  • 原文地址:https://www.cnblogs.com/51net/p/15970014.html
Copyright © 2020-2023  润新知