2017-08-04 37 views
1

我有以下内容并希望实现分页,但是我这样做时出现错误。源的IQueryable没有按:当我直接从LINQ返回的IQueryable的,只有当我从一个列表(或IEnumerable的)如何在列表中使用分页<T>

System.InvalidOperationException创建一个IQueryable查询结果进行分页我没有收到此错误't 实现IDbAsyncEnumerable。只有实现 IDbAsyncEnumerable的源才能用于实体框架异步 操作。欲了解更多详情,请参见 http://go.microsoft.com/fwlink/?LinkId=287068

List<WeeklyBilling> wbs = new List<WeeklyBilling>(); 

      foreach (Trucks t in trucks) 
      { 
       WeeklyBilling wb = new WeeklyBilling(); 
       wb.Customer = t.Customer; 
       wbs.Add(wb); 
      } 

      var wbitems = await wbs.AsQueryable<WeeklyBilling>() 
       .OrderBy(input.Sorting) 
       .PageBy(input) 
       .ToListAsync(); 

回答

3

参考official docs

由于实体框架查询使用LINQ,扩展 方法在IQueryable和IEnumerable上定义。但是,因为 它们只设计用于实体框架,所以如果您尝试在LINQ查询 (而非实体框架查询)上使用它们,您可能会收到以下错误: 。

您也可以用Skip and Take extension methods or other solutions替换PageBy。

var wbitems = wbs.OrderBy(input.Sorting) 
       .Skip(numberOfObjectsPerPage * pageNumber) 
       .Take(numberOfObjectsPerPage) 
       .ToList().