C # Linq-to-SQL: найти детей до трех уровней - PullRequest
0 голосов
/ 26 января 2019

У меня есть магазин с категориями, хранящимися в базе данных, как показано ниже:

enter image description here

Категории вложены друг в друга с использованием ParentCategoryId, а родительский идентификатор корня равен 0.

Я хочу знать, как я могу получить список категорий не более чем на 3 уровня?
Примечание: Для меня важно то, чтоКоличество максимального уровня можно регулировать, если это возможно, с помощью входного параметра.

1 Ответ

0 голосов
/ 29 января 2019

А как насчет цикла для каждого уровня?

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

Я предположил, что вам нужны все уровни, а не только последний.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...