Recursive call return a List, return type causing me issues
c#, recursion
Solution
Currently you haven't shown anything which actually adds a single category to the list... I'm assuming that as you recurse, you want to add the results of `Get(categoryId)` as well·
Preet's solution will certainly work, but here's an alternative which avoids creating all the extra lists:
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);
}
}
This creates a single list, and adds items to it as it goes.
One point though - if you've already got the child `Category` objects, do you really need to call `Get` again? Does each child only contain its ID until you fetch the whole category?
Problem
I have a recursive method that returns categories, and checks for its sub categories. This is my code: ``` public List<Category> GetAllChildCats(int categoryid) { List<Category> list = new List<Category>(); Category c = Get(categoryid); foreach(Category cat in c.ChildCategories) { list.Add(GetAllChildCats(cat.CategoryID)); } } ``` This fails because the call to `list.Add()` expects a `Category` object, but `GetAllChildCats()` returns `List<Category>` How should I work around this?