EFcore实现分页查询

分页的实现原理

1.Skip和Take是linq的扩展方法

Skip(n)跳过n条数据, Take(n)获取n条数据

2、需要知道满足条件的数据的总条数:用IQueryable的复用
LongCount和Count的区别

获取总页数=总条数/每页要展示的条数
3、页数: long pageCount =(long)Math.Ceiling(count * 1.0 / pageSize);

C#取整函数简介

1、Math.Ceiling:向上进位取整。例:Math.Ceiling(2.1)=3

2、Math.Floor:向下舍位取整。例:Math.Floor(2.6)=2

下面是示例方法

 /// 
        /// 分页方法
        /// 
        /// 页码从1开始
        /// 每一页的数据条数
        static void printpage(int pageindex, int pageSize)
        {
            using (MydatabaseContext mydatabase = new MydatabaseContext())
            {
                //过滤到不想要的数据
                //Contains()可以用来判断序列中是否存在指定的元素。
                //过滤掉不行要的数据
                IQueryable books = mydatabase.TBooks.Where(a => !a.Bookname.Contains("李四"));


                //减一是因为要从零开始
                var items = books.Skip((pageindex - 1) * pageSize).Take(pageSize);
                foreach (var book in items)
                {
                    Console.WriteLine(book.Bookname);
                }
                long count = books.LongCount();
                //Math.Ceiling:向上进位取整。
                long pageCount = (long)Math.Ceiling(count * 1.0 / pageSize);
                Console.WriteLine("总页数" + pageCount);

            }

        }

我们调用看看!

   static void Main(string[] args)
        {
            printpage(1,3);
        }

查看控制台 

EFcore实现分页查询_第1张图片

你可能感兴趣的:(.netcore)