0

カテゴリとサブカテゴリがあります。各サブカテゴリにはいくつかの製品があります。例:プログラミングカテゴリには| C#、java、基本的なサブカテゴリ| ここで、c#にはc#3、c#3.5製品があります| javaにはjavaee、javameなどがあります

linqからEFまでのカテゴリから10個の製品を選択したいと思います。

問題は、データベースからすべての製品をロードしてから並べ替えてから、そのうちの10個を選択したくないということです。

データベースからすべての製品をWebサーバーに転送せずに、データベースから10個の製品を取得できるソリューションが必要です。

EFは貪欲で、10個の製品しか使用せず、一部をスキップすることを私は知っています。しかし、私の場合、カテゴリとサブカテゴリがあるので、最初にカテゴリに属する​​さまざまなサブカテゴリからすべての製品を選択し、それらをリストに追加して、すべての製品をサーバーに移動させてから、そのうちの10個を選択する必要があると思います。

すべての製品をサーバーに転送する必要がないようにするためのベストプラクティスは何ですか?

4

1 に答える 1

2

これは1つのクエリで実行できます。

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 に答える