如何在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 关注
- 522 浏览
添加回答
举报
0/150
提交
取消
