【发布时间】:2014-08-27 16:21:25
【问题描述】:
我有一个简单的类别列表,如以下类所示
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; }
}
我正在尝试将我的平面类别列表映射到如下所示的层级结构:
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; }
}
我的问题是,鉴于可能存在无限数量的子层,实现这一目标的最佳方法是什么?
public HieraricalCategoryList MapCategories(FlatCategoryList flatCategoryList)
{
var hieraricalCategoryList = new HieraricalCategoryList();
//Do something here to map the flat category list to the hierarichal one...
return hieraricalCategoryList;
}
【问题讨论】:
-
关键是不要使用递归。
-
只是为了更好的编程。您应该使您的属性 IEnumerable
等,而不是列表。这样,您可以将任何继承 IEnumerable 的内容设置为那些属性,例如数组、列表或您创建的任何继承 IEnumerable 的自定义内容。 -
如果您必须在各处进行大量自定义映射,则有一个很棒的库,称为 AutoMapper。 automapper.org
标签: c#