2013-02-11 46 views
-3

假設下面的hierarichal父/子類模型:如何,獲得等級的種類包含至少一個產品

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; } 
    } 

我想在包含至少一個產品的分級方式的所有類別。

根類別

a1。次類別1(0產品)

a2。次類別2(1個產品)

b1。次類別1(0產品)

b2。次類別2(1個產品)

b3。子類別3(0產品)

預期的結果是:

根類別

A1。次類別1

a2。次類別2

b1。次類別1

b2。子類別2

謝謝。

+0

我試圖從所有產品開始,通過獲取其附加的類別,並試圖從這些重新創建層次結構遞歸。但不成功.. – 2013-02-11 20:01:51

+1

我懷疑你有3票倒下的原因,並沒有太多的答案,因爲這看起來像一個「請爲我寫的代碼」類型的問題。如果你用自己試圖解決這個問題的證據來編輯你的問題,你會得到更多的幫助。 – 2013-02-11 20:05:37

回答

0

如果您使用的是Linq,那麼這很簡單。沿着線的東西:

var categoriesWithProducts = category.Where(x=> x.Products.Count() > 0) 
+0

我需要獲取層次結構,而不是所有類別都以扁平方式 – 2013-02-11 20:03:14

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; 
} 

,要求把所有的頂級類別。

相關問題