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);