通过循环实现树状菜单
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);
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!