分页的实现原理
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
下面是示例方法
/// <summary>
/// 分页方法
/// </summary>
/// <param name="pageindex">页码从1开始</param>
/// <param name="pageSize">每一页的数据条数</param>
static void printpage(int pageindex, int pageSize)
{
using (MydatabaseContext mydatabase = new MydatabaseContext())
{
//过滤到不想要的数据
//Contains()可以用来判断序列中是否存在指定的元素。
//过滤掉不行要的数据
IQueryable<TBook> 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);
}
查看控制台