В настоящее время вы не показали ничего, что фактически добавляло бы одну категорию в список ... Я предполагаю, что когда вы повторяете, вы хотите добавить и результаты Get(categoryId)
.
Решение Преета, безусловно, будет работать, но есть альтернатива, которая позволяет избежать создания всех дополнительных списков:
public List<Category> GetAllChildCats(int categoryId)
{
List<Category> ret = new List<Category>();
GetAllChildCats(categoryId, ret);
return ret;
}
private void GetAllChildCats(int categoryId, List<Category> list)
{
Category c = Get(categoryid);
list.Add(c);
foreach(Category cat in c.ChildCategories)
{
GetAllChildCats(cat.CategoryID, list);
}
}
Это создает единый список и добавляет к нему элементы по ходу.
Одно замечание: если у вас уже есть дочерние Category
объекты, вам действительно нужно снова вызывать Get
? Каждый ребенок содержит только свой идентификатор, пока вы не получите всю категорию?