1、數據結構
public class Data
{
public string ID { get; set; }
public string Name { get; set; }
public string ParentId { get; set; }
public List<Data> ChildData { get; set; }
}
2、模擬數據
List<Data> list = new List<Data> { new Data {
ID="1",
Name="name1",
ParentId="0",
} ,
new Data {
ID="2",
Name="name2",
ParentId="0",
} ,
new Data {
ID="3",
Name="name3",
ParentId="1",
} ,
new Data {
ID="4",
Name="name4",
ParentId="1",
} ,
new Data {
ID="5",
Name="name5",
ParentId="2",
} ,
new Data {
ID="6",
Name="name6",
ParentId="4",
},
new Data {
ID="7",
Name="name7",
ParentId="6",
}
};
4、對數據進行排序,目的是先加載父節點。
var listData = list.OrderBy(o => o.ParentId).ToList();
5、定義結果集合
List<Data> resList = new List<Data>();
6、for 循環遍歷 或者foreach 遍歷排序好的數據,生成樹結構菜單
foreach (var item in listData)
{
if (item.ParentId == "0")
{
resList.Add(item);
}
else
{
//這個地方是 最難理解得地方,我一直在想如何找他們得父節點,就是想通過一層一層去找,這種想法就是錯的,
//正確得做法是只要讓子節點加載到父節點,就可以了;
var parent = listData.Where(x => x.ID == item.ParentId).FirstOrDefault();
if (parent.ChildData == null)
{
parent.ChildData = new List<Data>();W
}
parent.ChildData.Add(item);
}
}
7、序列化成json
var resJson = Newtonsoft.Json.JsonConvert.SerializeObject(resList);