2

現在のカテゴリのすべてのアイテムと、現在のカテゴリにリンクされているすべてのサブカテゴリを取得したいと思います。現在は再帰関数を使ってやっていますが、クエリを変更するだけでできるのではないかと思います。主な理由は、使用したいのですが、再帰を使用.Skip().Take()て最初にすべてのカテゴリを取得する必要がある場合でも、違いはありません。

データベース

ここに画像の説明を入力してください

私がやりたいことをする私の反省機能

public static IQueryable<Models.Item> Items(int id, List<Models.Item> items)
{
    if (items == null)
    {
        items = new List<Item>();
    }

    ModelDataContext _db = new ModelDataContext();

    var currentCategory = _db.Categories.Where(x => x.ID == id).Single();

    items.AddRange(currentCategory.Items);

    foreach (var c in currentCategory.Categories)
    {
        Items(c.ID, items);
    }

    return items.AsQueryable();
}

tl; dr;
カテゴリとサブカテゴリのすべてのアイテムを取得する再帰関数があります。LINQ自体だけで可能かどうか疑問に思います。

4

1 に答える 1

0

EF も LINQ to SQL も、自己参照オブジェクトの積極的な読み込みをサポートしていません。彼らが新しい HeirarchyID をサポートしていれば可能かもしれませんが、悲しいかな、どちらのプラットフォームも現時点ではそれを実際にサポートしていません。

于 2012-09-19T17:35:03.953 に答える