如何获得包含至少一个产品的分层类别

时间:2013-02-11 19:53:06

标签: c#

假设以下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

感谢。

2 个答案:

答案 0 :(得分:0)

如果您使用的是Linq,那么这很简单。有点像:

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

答案 1 :(得分: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;
}

并呼吁所有顶级类别。