-3

次の階層的な親/子カテゴリモデルを想定しています。

    public class Category
    {
        public int CategoryId { get; set; }
        public Category ParentCategory { get; set; }
        public IList<Category> ChildCategories { get; set; }
        public IList<Product> Products { get; set; }
    }

少なくとも1つの製品を含む階層的な方法ですべてのカテゴリを取得したいと思います。

ルートカテゴリ

a1。サブカテゴリー1(0製品)

a2。サブカテゴリー2(1製品)

b1。サブカテゴリー1(0製品)

b2。サブカテゴリー2(1製品)

b3。サブカテゴリー3(0製品)

期待される結果は次のとおりです。

ルートカテゴリ

a1。サブカテゴリー1

a2。サブカテゴリー2

b1。サブカテゴリー1

b2。サブカテゴリー2

ありがとう。

4

2 に答える 2

0

未検証:

Category? GetNotEmpty(Category category)
{
   Category returnCategory = new Category();
   foreach(Category subCategory in category.ChildCategories)
          if(GetNotEmpty(subCategory) != null) returnCategory.ChildCategories.Add(GetNotEmpty(subCategory));

   if(returnCategory.ChildCategories.Count > 0 || returnCategory.Products.Count > 0) return returnCategory;
   else return null;
}

そして、すべての上位カテゴリを呼び出します。

于 2013-02-11T22:01:13.933 に答える
0

Linq を使用している場合、これは簡単です。次のようなもの:

var categoriesWithProducts = category.Where(x=> x.Products.Count() > 0)
于 2013-02-11T19:59:31.943 に答える