我想做类似分页的事情。假设我们的数据库中有100个联系人。当我的索引页面第一次加载时,它将从数据库加载20个联系人项目。页面末尾有一个“更多”按钮。当用户单击该按钮时,我想从数据库中加载接下来的20个项目,并将其显示在已显示的联系人下方。
public ActionResult Index(int no)
{
var contacts = GetContactFromDB(no) //no is used to know what is the current page number
}
public IList<Contact> GetContactFromDB(int pagenumber)
{
// here write the query to get next 20 items
}
我想我忘了告诉我的一件事是,我不想丢失前20个联系人。我的意思是,当用户单击该按钮时,将使用AJAX请求从数据库中获取接下来的20个联系人,并追加这些新联系人。前一个之后有20个联系人...
最佳答案
return Contacts.Skip(PageSize * pageNumber).Take(PageSize).ToList();
注意:这没有考虑您如何获得
Contacts
。但是我想您已经知道:)另外,它假设pageNumber
是基于0的。如果使用的是Linq-To-SQL或Linq-To-Entities,则对
Skip
和Take
的调用也将转换为最终数据库查询的一部分。