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

Sha*_*aby 2 c# linq ienumerable iqueryable

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

System.InvalidOperationException:源 IQueryable 未实现 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();
Run Code Online (Sandbox Code Playgroud)

Nic*_*ico 6

参考官方文档

\n
\n

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

\n
\n

您还可以用Skip 和 Take 扩展方法或其他解决方案替换 PageBy 。

\n
var wbitems = wbs.OrderBy(input.Sorting)\n               .Skip(numberOfObjectsPerPage * pageNumber)\n               .Take(numberOfObjectsPerPage)\n               .ToList();\n
Run Code Online (Sandbox Code Playgroud)\n