-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。子类别 1 (0 产品)

a2。子类别 2(1 个产品)

b1。子类别 1 (0 产品)

b2。子类别 2(1 个产品)

b3。子类别 3 (0 产品)

预期结果是:

根类别

1。子类别 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 回答