У меня есть Category
class
, который имеет List<Category>
. Таким образом, создается древовидная структура типа Category
, затем несколько подкатегорий, затем снова несколько подкатегорий под ней и т. Д.
Я хочу удалить все это дерево, я реализовал описанный ниже метод, но он не работает должным образом.
public async Task DeleteCategoryById(int Id)
{
CategoryDto category = new CategoryDto();
var details = _categoryRepository.GetAll().Where(x => x.Id == Id);
if (details == null)
{
return;
}
var children = (_categoryRepository.GetAll().Where(x => x.ParentId == Id));
int childCount = children.Count();
if (childCount != 0 )
{
category.Category = ObjectMapper.Map<List<CategoryDto>>(children);
}
if (category.Category == null)
{
await _categoryRepository.DeleteAsync(x => x.Id == Id);
}
else
{
for (var i = 0; i < childCount; i++)
{
await DeleteCategoryById(category.Category[i].Id);
}
}
}
public class Category
{
public int Id { get; set; }
public string CategoryName { get; set; }
public bool IsLast { get; set; } = true;
public int ParentId { get; set; }
public List<Category> Category { get; set; }
}