C# 递归获取树形结构数据类型

Model:可嵌套子类

    public class Equipment
    {
        public string Name { get; set; }             
        public Guid Id { get; set; }             
        public Guid ParentId { get; set; }             
        public List<Equipment> Children { get; set; }             
    }

 

复制代码
        //递归获取子级
        static List<Equipment> GetChildren(Equipment equipment,List<Equipment> list)
        {
            if (!list.Any(a => a.ParentId == equipment.Id))
                return null;
            else
            {
                equipment.Children = list.Where(a=>a.ParentId == equipment.Id).ToList();
                foreach (var item in equipment.Children)
                {
                    item.Children = GetChildren(item, list);
                }
                return equipment.Children;
            }
        }

        static void Main(string[] args)
        {
            var list = new List<Equipment>();
            var e1 = new Equipment { Id = Guid.NewGuid(), ParentId = Guid.Empty, Name = "一级" };
            var e2 = new Equipment { Id = Guid.NewGuid(), ParentId = e1.Id, Name = "二级" };
            var e3 = new Equipment { Id = Guid.NewGuid(), ParentId = e2.Id, Name = "三级" };
            list.Add(e1);
            list.Add(e2);
            list.Add(e3);
            //对list 做树型结构处理
            //第一级
            var result = list.Where(a =>!list.Any(b=>a.ParentId==b.Id)).ToList();
            foreach (var item in result)
            {
                item.Children = GetChildren(item, list);
            }
            //result 树形结构完成
            Console.ReadKey();
        }
复制代码

 

posted @   点终将连成线  阅读(166)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示