【问题标题】:Pagination with LINQ to SQL使用 LINQ to SQL 进行分页
【发布时间】:2017-06-07 14:58:34
【问题描述】:

我们在 LINQ to SQL 中有 orderby 子句,如下所示,但是我们有什么要分页的吗?

from trans in DB.transactions 
orderby trans.column descending 
select trans;

或者我们必须手动(有点)像下面的查询一样?

(from trans in DB.transactions 
orderby trans.column descending 
select trans).Skip(noOfRecords).Take(pageSize);

【问题讨论】:

  • 是的。你必须通过帮助SkipTake 方法来做到这一点。

标签: c# entity-framework linq linq-to-sql pagination


【解决方案1】:

据我所知,您必须使用.Skip.Take,但您可以为IQueryable 编写扩展名以简化您的工作:

public static class Extensions
{
    public static IQueryable<T> Paging<T>(this IQueryable<T> source, int pageNumber, int pageLength)
    {
        return source.Skip(pageNumber * pageLength).Take(pageLength);
    }
}

var source = (from trans in DB.transactions 
orderby "cancellation_reason_id" descending 
select trans);

source = source.Paging(0, 10); // Get first page with 10 item

【讨论】:

  • 应该是pageNumber * pageLength 而不是&amp;
  • @Mats391 感谢编辑
  • 感谢@Feriloo,但我没有问如何使用 Skip 和 Take best 而是任何其他解决方法的可能性(可能是 linq to SQL 中的某些东西)。
猜你喜欢
  • 2011-08-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-22
  • 1970-01-01
  • 2011-04-07
  • 1970-01-01
相关资源
最近更新 更多