1

ProductCategory、およびの3 つのテーブル がありますProductCategory。ここで、はとProductCategoryの間の多対多関係の結合テーブルです。次の Linq クエリ (クラスの拡張メソッド)は、現在の 内の各レコードの往復になります。どうしてこれなの?これはどのように改善できますか?また、これはデータベース ファーストの EF であることに注意してください。ProductCategoryCategoryProductCategoryCategory

    public IEnumerable<Product> ActiveProducts
    {
        get
        {
            return this.ProductCategories.Where(c => !c.Product.IsDeleted && c.Product.IsActive).OrderBy(c => c.SortOrder).Select(c => c.Product);
        }
    }
4

2 に答える 2

2

残念ながら、ナビゲーション プロパティはそうではありませんIQueryable。これが、LINQ-to-Objects クエリを取得する理由です。

于 2013-10-18T17:09:00.563 に答える
1

Linq のデフォルトでは、列挙型の反復ごとにデータをフェッチします。すべての行を一度にフェッチする場合は、クエリで .ToList() を呼び出します。それはより有利なアプローチのようです。

于 2013-10-18T17:11:20.880 に答える