Asp.net mvc 5 MVC5分页一个很长的列表(50000个对象),我使用了listPaged,但对列表收费需要时间

Asp.net mvc 5 MVC5分页一个很长的列表(50000个对象),我使用了listPaged,但对列表收费需要时间,asp.net-mvc-5,pagedlist,Asp.net Mvc 5,Pagedlist,我必须显示一个包含超过50000本书的书籍列表。 我想显示分页列表,在这里,我为每一页调用一个方法,给我20本书 List< Books > Ebooks = Books.GetLibrary(index); 但这样做,我必须对每个索引调用(var Books=from b in db.Books select b;) **编辑**** 我正在寻找实现这一目标的迹象 ListEbooks=Books.GetLibrary(索引); 当然,我有所有书的数量,所以我知道页数 所以我在寻

我必须显示一个包含超过50000本书的书籍列表。 我想显示分页列表,在这里,我为每一页调用一个方法,给我20本书

List< Books > Ebooks = Books.GetLibrary(index);
但这样做,我必须对每个索引调用(var Books=from b in db.Books select b;)

**编辑****

我正在寻找实现这一目标的迹象

ListEbooks=Books.GetLibrary(索引); 当然,我有所有书的数量,所以我知道页数 所以我在寻找实现它的指示:对于每个索引,我调用GetLibrary(index)



有什么建议吗?

您是否尝试过以下方法:

var pagedBooks = Books.GetLibrary().Skip(pageNumber * pageSize).Take(pageSize);
这假定页码为0

如果这不起作用,您可以向Books类添加一个新方法,直接从数据源获取分页集吗

类似于“Books.GetPage(pageNumber,pageSize);”这样你就不会每次都得到整个收藏


除此之外,您可能需要找到一种方法来缓存Books.GetLibrary()的初始结果。

谢谢您的回答,是的,我知道GetLibrary的作用:它逐页获取图书,逐页20本,跳过20*页码。pagedList分割给定的列表,例如,如果我们有20本书(GetLibrary的结果),pagedList(pagenumber,pageSize):pageSize=要在页面上显示的书,pagenumber索引都保留为pagedList,它将20本书除以pageSize,我们将得到20/pageSize页,我想要的是每次调用GetLibrary(index):index=numberofbooks/20本书
var pagedBooks = Books.GetLibrary().Skip(pageNumber * pageSize).Take(pageSize);