0

我有类别和子类别。每个子类别都有一些产品。eg编程类有| C# , java , 基本子类别 | 其中 c# 有 c# 3 , c# 3.5 产品 | java有java ee、java me等

我想从使用 linq to EF 的类别中选择 10 个产品。

问题是我不想从数据库中加载所有产品,然后对它们进行排序,然后选择其中的 10 个。

我想要一个解决方案,我可以只从数据库中获取 10 个产品,而无需将所有产品从数据库传输回 Web 服务器。

我知道 EF 很贪心,只会拿 10 种产品并跳过一些。但在我的情况下,我有类别和子类别,所以我认为我应该首先从属于一个类别的不同子类别中选择所有产品,并将它们附加到一个列表中,从而将所有产品带到服务器,然后选择其中的 10 个。

最好的做法是什么,这样我就不必将所有产品都转移到服务器上?

4

1 回答 1

2

您可以在一个查询中执行此操作:

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);
于 2012-04-22T08:19:12.640 回答