C# LINQ和分页

C# LINQ和分页,c#,linq-to-sql,C#,Linq To Sql,我们需要使用LINQ从数据库中获取数据。我们现在需要实现分页 我想我们需要一次获取10记录,当我们单击Next按钮时,它将从db获取下一个10记录 请用密码引导我。谢谢。跳过和。采取扩展方法可以使用: var result = (from c in Customers select new { c.City, c.ContactName }

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

我想我们需要一次获取
10
记录,当我们单击Next按钮时,它将从db获取下一个
10
记录


请用密码引导我。谢谢

。跳过
。采取
扩展方法可以使用:

var result = (from c in Customers
              select new 
              {
                  c.City,
                  c.ContactName
              }
              ).Skip(5).Take(5);
LINQ函数将限制获取的项目数量。该函数将忽略前n项。类似的方法可能会奏效:

myDataSource.Skip(pageSize * curPage).Take(pageSize)

我始终使用以下代码:

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);
    }

}

很简单!谢谢你提供的信息!:)哇,太好了,谢谢:请注意,在LINQtoSQL中,您必须首先对输入进行排序。作为通用扩展方法很有用。这仅在第1页是您的起始页时才有效。如果要在第一页以页码0开头,请从该页中删除-1。只需返回source.Skip(page*pageSize)、Take(pageSize);
MyQuery.Page(pageNumber, pageSize)