C#Linq-to-SQL:查找多达三个级别的子级

时间:2019-01-26 12:18:17

标签: c# linq-to-sql

我有一家商店,其类别存储在如下数据库中:

enter image description here

使用ParentCategoryId将类别彼此嵌套,并且根父ID为0。

我想知道如何最多检索不超过3个级别的类别列表?
注意:对我来说重要的一点是,如果可能的话,可以通过输入参数来调整最大级别数。

1 个答案:

答案 0 :(得分:1)

每个级别的循环怎么样?

public void GetCategories(int level) {
   var categories = db.Categories.Where(c => c.ParentCategoryId == 0).ToList();
   var parents = categories.Select(c => c.Id);
   for (var ii = 0; ii < level; ii++) {
      var newCategories = db.Categories.Where(c => parents.Contains(c.ParentCategoryId).ToList();  
      parents = newCategories.Select(c => c.Id);
      categories = categories.Concat(newCategories);
}

   var result = categories;
}

我想您需要所有级别,而不仅仅是最后一个级别。