tôi có một danh sách phẳng các loại như trong các lớp sauLập bản đồ một danh sách phẳng vào một danh sách thứ bậc với cha mẹ ID 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; }
}
Tôi đang cố gắng để ánh xạ danh sách căn hộ của tôi trong danh mục cho một cấu trúc heirarical chẳng hạn như được hiển thị bên dưới:
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; }
}
Câu hỏi của tôi là cách tốt nhất để đạt được điều này, vì có thể có một số lượng vô hạn?
public HieraricalCategoryList MapCategories(FlatCategoryList flatCategoryList)
{
var hieraricalCategoryList = new HieraricalCategoryList();
//Do something here to map the flat category list to the hierarichal one...
return hieraricalCategoryList;
}
Điều quan trọng là KHÔNG sử dụng đệ quy. –
Chỉ cần một bên không cho lập trình tốt hơn. Bạn nên làm cho các thuộc tính của bạn IEnumerable vv, thay vì danh sách. Bằng cách này bạn có thể đặt bất cứ thứ gì kế thừa IEnumerable cho những người thích hợp như mảng, danh sách hoặc bất cứ thứ gì tùy chỉnh mà bạn tạo ra để kế thừa IEnumerable. –
Nếu bạn phải thực hiện một loạt các ánh xạ tùy chỉnh khắp nơi, có một thư viện tuyệt vời cho cái gọi là AutoMapper này. http://automapper.org/ –