【问题标题】:server side paging and OrderBy with DbContext使用 DbContext 的服务器端分页和 OrderBy
【发布时间】:2012-03-01 15:45:48
【问题描述】:

有没有人知道如何使用 DbContext 来执行服务器端分页和 orderby 功能。我使用 Where 子句过滤记录。需要类似的东西,以便我只能获得有限数量的记录。

提前致谢

【问题讨论】:

标签: c# asp.net-mvc-3 entity-framework-4.1


【解决方案1】:

检查此解决方案。可能是您正在寻找的:

public const int PAGE_SIZE = 10;
protected void LinqDataSource1_Selecting(object sender, LinqDataSourceSelectEventArgs e)
{
// LINQ query
    var query = from m in db.Products
    select m;
    // Set the total count
    // so GridView knows how many pages to create
    e.Arguments.TotalRowCount = query.Count();
    // Get only the rows we need for the page requested
    query = query.Skip(GridView1.PageIndex * PAGE_SIZE).Take(PAGE_SIZE);
    e.Result = query;
}

Effective Paging using LINQ

【讨论】:

  • 虽然理论上这可以回答这个问题,it would be preferable 在这里包含答案的基本部分,并提供链接以供参考。
【解决方案2】:

您可以在 EF 中使用 Skip 和 Top 构建器方法执行此操作,或者在调用 OrderBy 后使用 LINQ Skip 和 Take。

【讨论】:

  • 这就是我想要做的code IQueryable LoadData(Expression> filter = null, Func, IOrderedQueryable> orderBy = null, int currentPage = 0, int pageSize = 0,string includeProperties = "") {IQueryable query = _context.Set().Where(filter).AsNoTracking(); IOrderedQueryable 有序查询; IQueryable returnValue = null; if (orderBy != null) query = orderBy(query); if (pageSize>0) returnValue = query.Skip((currentPage - 1) * pageSize).Take(pageSize).AsQueryable();return returnValue;} code
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-05-17
  • 2010-10-31
  • 1970-01-01
  • 2017-10-30
  • 2019-12-25
  • 2016-05-04
相关资源
最近更新 更多