mam płaską listę kategorii, jak pokazano w następujących klasachMapowanie listę płaski do hierarchicznej listy z rodzicem identyfikatory C#
public class FlatCategoryList
{
public List<FlatCategory> Categories { get; set; }
}
public class FlatCategory
{
public string ID { get; set; }
public string Name { get; set; }
public string ParentID { get; set; }
}
Próbuję map moją płaską listę kategorii do heirarical struktury tak jak pokazano poniżej:
public class HieraricalCategoryList
{
public List<Category> Categories { get; set; }
}
public class Category
{
public string ID { get; set; }
public string Name { get; set; }
public string ParentID { get; set; }
public List<Category> ChildCategories { get; set; }
}
Moje pytanie brzmi, co jest najlepszym sposobem osiągnięcia tego celu, biorąc pod uwagę fakt, że nie może być nieskończona ilość szczebli dziecko?
public HieraricalCategoryList MapCategories(FlatCategoryList flatCategoryList)
{
var hieraricalCategoryList = new HieraricalCategoryList();
//Do something here to map the flat category list to the hierarichal one...
return hieraricalCategoryList;
}
Kluczem do tego jest NIE używanie rekursji. –
Tylko strona nie dla lepszego programowania. Powinieneś uczynić swoje właściwości IEnumerable itd. Zamiast listy. W ten sposób możesz ustawić wszystko, co dziedziczy IEnumerable do tych właściwości, takich jak tablica, lista lub cokolwiek, co stworzysz, które dziedziczy IEnumerable. –
Jeśli masz do zrobienia mnóstwo niestandardowego mapowania w całym miejscu, jest świetna biblioteka dla tego o nazwie AutoMapper. http://automapper.org/ –