当前位置: 移动技术网 > 科技>操作系统>windows > EF如何分页最大优化

EF如何分页最大优化

2020年05月09日  | 移动技术网科技  | 我要评论

户外广告网,热点书库,振动设备

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,
    }

 转自:https://www.cnblogs.com/330774495qq/p/12855455.html

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网