LINQ和分页

Mou*_*Mou 30 c# linq-to-sql

我们需要使用LINQ从数据库中获取数据.我们现在需要实施分页.

我想一次我们需要一次获取10记录,当我们点击Next按钮然后它将10从db 获取下一条记录.

请指导我代码.谢谢

Wim*_*tra 78

我总是使用以下代码:

public static class PagingExtensions
{
    //used by LINQ to SQL
    public static IQueryable<TSource> Page<TSource>(this IQueryable<TSource> source, int page, int pageSize)
    {
        return source.Skip((page - 1) * pageSize).Take(pageSize);
    }

    //used by LINQ
    public static IEnumerable<TSource> Page<TSource>(this IEnumerable<TSource> source, int page, int pageSize)
    {
        return source.Skip((page - 1) * pageSize).Take(pageSize);
    }

}
Run Code Online (Sandbox Code Playgroud)

这是一个静态类,您可以在源中包含它.添加此类后,您可以执行以下操作:

MyQuery.Page(pageNumber, pageSize)
Run Code Online (Sandbox Code Playgroud)

  • 请注意,在 LINQ to SQL 中,您必须首先对输入进行排序。 (7认同)

dle*_*lev 20

LINQ Take()函数将限制拍摄的项目数.将跳转()函数将忽略前n项.像这样的东西可能会起作用:

myDataSource.Skip(pageSize * curPage).Take(pageSize)
Run Code Online (Sandbox Code Playgroud)


Dar*_*rov 14

.Skip.Take扩展方法可以使用:

var result = (from c in Customers
              select new 
              {
                  c.City,
                  c.ContactName
              }
              ).Skip(5).Take(5);
Run Code Online (Sandbox Code Playgroud)