如何在列表<t>上使用分页

时间:2017-08-04 00:41:51

标签: c# linq ienumerable iqueryable

我有以下内容并希望实现分页,但这样做会出错。当我直接对从LINQ作为IQueryable返回的查询结果执行分页时,我没有收到此错误,只有当我从List(或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();

1 个答案:

答案 0 :(得分:3)

请参阅official docs

  

因为Entity Framework查询使用了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().