如果你可以添加另一個屬性類具有子項是這樣的:
public class Thing
{
public Thing()
{
Things = new List<Thing>();
}
public int Id { get; set; }
public string Name { get; set; }
public int? ParentId { get; set; }
public List<Thing> Things { get; set; }
}
然後你就可以輕鬆地集團的項目,以他們的父母是這樣的:
var things = new List<Thing>
{
new Thing { Id = 1, Name = "Fire", ParentId = null },
new Thing { Id = 2, Name = "Fire2", ParentId = 1 },
new Thing { Id = 3, Name = "Fire3", ParentId = 2 },
new Thing { Id = 4, Name = "Blast", ParentId = 2},
new Thing { Id = 5, Name = "Water", ParentId = null },
new Thing { Id = 6, Name = "Water2", ParentId = 5 },
new Thing { Id = 7, Name = "Waterx", ParentId = 6 }
};
var groupedThings = new List<Thing>();
foreach (var thing in things)
{
if (thing.ParentId != null)
{
things.First(t => t.Id == thing.ParentId).Things.Add(thing);
}
else
{
groupedThings.Add(thing);
}
}
groupedThings.Dump();
遞歸是答案 –
這就像5個不同的問題...你想知道如何將其轉換爲結構樹對象?或者你想知道如何從後端獲取這個列表並在前端渲染爲一棵樹?爲此,我會說找到一個你喜歡的圖書館並格式化該圖書館的數據。 – thinklarge
對不起,我只是在尋找一種方法來實現以樹形格式顯示數據的最終結果。我不知道哪個是最好的方法,所以我在同一時間想着5個不同的東西,這讓我很頭疼哈哈:) – BrunoLM