如何在LINQ查询中实现分页?实际上,如果可以模仿sql TOP函数,我会感到满意。但是,我确信无论如何都需要尽快提供完整的分页支持。var queryResult = from o in objects where ...
select new
{
A = o.a,
B = o.b }
????????? TOP 10????????
3 回答
郎朗坤
TA贡献1921条经验 获得超9个赞
使用Skip
和Take
绝对是要走的路。如果我实现这个,我可能会编写自己的扩展方法来处理分页(使代码更具可读性)。实施当然可以使用Skip
和Take
:
static class PagingUtils { public static IEnumerable<T> Page<T>(this IEnumerable<T> en, int pageSize, int page) { return en.Skip(page * pageSize).Take(pageSize); } public static IQueryable<T> Page<T>(this IQueryable<T> en, int pageSize, int page) { return en.Skip(page * pageSize).Take(pageSize); }}
该类定义了两个扩展方法 - 一个用于IEnumerable
和一个用于IQueryable
,这意味着您可以将它与LINQ to Objects和LINQ to SQL一起使用(编写数据库查询时,编译器将选择IQueryable
版本)。
根据您的分页要求,您还可以添加一些其他行为(例如,处理负数pageSize
或page
值)。以下是如何在查询中使用此扩展方法的示例:
var q = (from p in products where p.Show == true select new { p.Name }).Page(10, pageIndex);
- 3 回答
- 0 关注
- 441 浏览
添加回答
举报
0/150
提交
取消