打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
EF如何分页最大优化
public static class QueryableExtension
    {
        public static IQueryable<T> Paged<T>(this IQueryable<T> query, Expression<Func<T, object>> expression, OrderByType orderByType = OrderByType.Desc,int currentPage = 1, int pageSize = 5,int pageCount = 0)
        {
            if (currentPage < 1)
            {
                currentPage = 1;
            }
            var Skip = (currentPage - 1) * pageSize;
            var Take = pageSize;
            OrderByType byType = orderByType;

            var MaxPageIndex = pageCount % pageSize == 0 ? pageCount / pageSize : pageCount / pageSize + 1;

            if (currentPage > MaxPageIndex / 2)//页码大于一半用倒序
            {
                var Mod = pageCount % pageSize;
                var Page = (int)Math.Ceiling((Decimal)pageCount / pageSize);
                if (currentPage * pageSize >= pageCount)
                {
                    Skip = 0; Take = Mod == 0 ? pageSize : Mod;
                }
                else
                {
                    Skip = (Page - currentPage - 1) * pageSize + Mod;
                }
                byType = orderByType == OrderByType.Desc ? OrderByType.Asc : OrderByType.Desc;
            }
            else
            {
                byType = orderByType == OrderByType.Desc ? OrderByType.Desc : OrderByType.Asc;
            }
            if (pageCount > pageSize)
            {
                if (byType == OrderByType.Desc)
                    query = query.OrderByDescending(expression).Skip(Skip).Take(Take);
                else
                    query = query.OrderBy(expression).Skip(Skip).Take(Take);
            }
            return query;
        }
    }

    public enum OrderByType
    {
        Desc = 2,
        Asc = 1,
    }

 

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
JavaScript分页代码
经典算法题每日演练——第十八题 外排序
使用扩展HibernateDaoSupport实现分页技术总结
DataList控件实现分页功能
显示新闻列表带分页的控件
Oracle、SQLServer、Access、Mysql数据库分页
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服