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