Pab*_*ruz 21 c# linq pagination linq-to-sql
使用LINQ to SQL获取分页结果的最佳模式是什么?
我有以下场景:
假设我想按描述搜索项目表.我可以轻松地做到:
public IQueryable<Item> FindItemsByDescription(string description)
{
return from item in _dc.Items
where item.Description.Contains(description);
}
Run Code Online (Sandbox Code Playgroud)
现在,对这个结果集进行分页的最佳方法是什么?
是否有LINQ to SQL常用模式来执行此操作?
编辑:我必须澄清一件小事.我知道Take和Skip方法.但是,在使用Take和Skip之前,我应该如何获得查询将检索的结果总数?
Jos*_*lio 30
分页模式非常简单.它涉及使用Skip()和Take()扩展方法,如下所示:
public IQueryable<Item> FindItemsByDescription(string description, int pageIndex, int pageSize)
{
return from item in _dc.Items
where item.Description.
Contains(description).
Skip((pageIndex - 1) * pageSize).
Take(pageSize);
}
Run Code Online (Sandbox Code Playgroud)
更新:要获得总计数,只需使用Count()方法:
int totalCount = from item in _dc.Items
where item.Description.
Contains(description).Count();
int numberOfPages = (int)(totalCount/pageSize);
Run Code Online (Sandbox Code Playgroud)
根据您显示记录的方式,您可以使用numberOfPages显示导航栏,其中包含"Page X of Y"...第1页,共10页等.
| 归档时间: |
|
| 查看次数: |
22778 次 |
| 最近记录: |