【问题标题】:How do I use Paging on a List<T>如何在 List<T> 上使用分页
【发布时间】:2018-01-11 18:58:59
【问题描述】:

我有以下内容并希望实现分页,但这样做时出现错误。当我直接对从 LINQ 作为 IQueryable 返回的查询结果执行分页时,仅当我从列表(或 IEnumerable)创建 IQueryable 时,我没有收到此错误

System.InvalidOperationException:源 IQueryable 没有 实现 IDbAsyncEnumerable。只有实现的来源 IDbAsyncEnumerable 可用于 Entity Framework 异步 操作。有关更多详细信息,请参阅 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();

【问题讨论】:

    标签: c# linq ienumerable iqueryable


    【解决方案1】:

    请参阅official docs

    因为实体框架查询使用 LINQ,所以扩展 方法在 IQueryable 和 IEnumerable 上定义。然而,由于 它们仅设计用于与实体框架一起使用,您可以 如果您尝试在 LINQ 查询中使用它们,则会收到以下错误 这不是实体框架查询。

    您也可以将 PageBy 替换为 Skip and Take extension methods or other solutions

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

    【讨论】:

      猜你喜欢
      • 2012-06-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-27
      • 2011-06-23
      • 2017-11-01
      • 1970-01-01
      相关资源
      最近更新 更多