asp.net MVC 中的分页
本文关键字:分页 MVC net asp | 更新日期: 2023-09-27 18:31:50
我有类别和子类别。每个子类别都有一些产品。例如,编程类别有 |C# , java , 基本子类别 |其中 C# 有 C# 3 、C# 3.5 产品 |Java有Java EE,Java Me等
我想使用 linq to EF 从类别中选择 10 个产品。
问题是我不想从数据库中加载所有产品,然后对它们进行排序,然后选择其中的 10 个。
我想要一个解决方案,我可以从数据库中获取 10 个产品,而无需将所有产品从数据库传输回 Web 服务器。
我知道 EF 很贪婪,只会拿 10 个产品并跳过一些。 但就我而言,我有类别和子类别,所以我认为我应该首先从属于一个类别的不同子类别中选择所有产品,并将它们附加到导致将所有产品带到服务器的列表中,然后选择其中的 10 个。
最佳实践是什么,这样我就不必将所有产品转移到服务器?
您可以在一个查询中执行此操作:
var pagedProducts = _db.Categories.Join(
_db.Products,
c => c.CategoryId,
p => p.CategoryId,
(Category, Products) =>
new
{
CategoryType = Category,
ItsProducts = Products
})
.OrderBy(g => g.Category.Name)
.Skip((CurrentPage - 1) * pageSize)
.Take(pageSize);