我正在创建带有分页的页面,并使用带有参数 page
和 numberOfElementsPerPage
的方法。
在此方法中,我使用 Linq to Entities 加载页面元素:
public List<Item> GetElements(int page, int numberOfElementsPerPage)
{
return DataContext.Items.OrderBy(x => x.Id).Skip((page-1)*numberOfElementsPerPage).Take(numberOfElementsPerPage);
}
我想问的是,Skip
/Take
是如何工作的?它会先从数据库中取出所有记录,然后再进行排序和 Skip
/Take
操作吗?如果是的话,当数据库中有 100000 条或更多记录时,这将是相当糟糕的解决方案。那么什么是最好的解决方案呢?