MyClass
gồm ID
ParentID
và List<MyClass>
như Children
(ID/ParentID) Danh mục vào danh sách phân cấp
Tôi có danh sách các MyClass
như
ID ParentID
1 0
2 7
3 1
4 5
5 1
6 2
7 1
8 6
9 0
10 9
Output (danh sách phân cấp) này như List<MyClass>
1 __ 3
|__ 5__ 4
|__ 7__ 2__ 6__ 8
|__ 11
9 __10
Cách đơn giản nhất để đạt được điều này trong LINQ là gì?
PS: ParentID
không sắp xếp
Edit:
thử của tôi:
class MyClass
{
public int ID;
public int ParentID;
public List<MyClass> Children = new List<MyClass>();
public MyClass(int id, int parent_id)
{
ID = id;
ParentID = parent_id;
}
}
khởi tạo dữ liệu mẫu và cố gắng đạt được dữ liệu phân cấp
List<MyClass> items = new List<MyClass>()
{
new MyClass(1, 0),
new MyClass(2, 7),
new MyClass(3, 1),
new MyClass(4, 5),
new MyClass(5, 1),
new MyClass(6, 2),
new MyClass(7,1),
new MyClass(8, 6),
new MyClass(9, 0),
new MyClass(10, 9),
new MyClass(11, 7),
};
Dictionary<int, MyClass> dic = items.ToDictionary(ee => ee.ID);
foreach (var c in items)
if (dic.ContainsKey(c.ParentID))
dic[c.ParentID].Children.Add(c);
như bạn có thể thấy, rất nhiều các mục tôi không muốn vẫn còn trong từ điển
loại cấu trúc dữ liệu nên sản lượng được? – Jon
@Jon: Vui lòng tham khảo câu hỏi được cập nhật của tôi –
Nhưng một 'Danh sách' không phải là cấu trúc dữ liệu phân cấp. Nói cách khác, làm thế nào để bạn đề xuất biến một 'Danh sách' thành cây hình? – Jon