C#递归处理树菜单

23 篇文章 1 订阅

菜单类 

  public class Enum
        {
            public int id { get; set; }
            public string Name { get; set; }
            public int pid { get; set; }
        }

树形菜单类

 public class ResposeEnum
        {
            public int id { get; set; }
            public string Name { get; set; }
            public int pid { get; set; }
            public List<ResposeEnum> Childen { get; set; }
        }

递归方法封装,调用

 static List<ResposeEnum> GetMenuTree(List<Enum> list, int pid)
        {
            List<ResposeEnum> tree = new List<ResposeEnum>();
            List<Enum> children = list.Where(m => m.pid == pid).ToList();  //从第一级根节点开始
            if (children.Count > 0)
            {
                for (var i = 0; i < children.Count; i++)
                {
                    ResposeEnum itemMenu = new ResposeEnum()
                    {
                        id = children[i].id,
                        Name = children[i].Name,
                        pid = children[i].pid,
                        Childen = GetMenuTree(list, children[i].id)
                    };
                    tree.Add(itemMenu);
                }
            }
            return tree;
        }

//调用,测试效果
            List<Enum> cds = new List<Enum>(){
               new Enum(){ id=1,Name="人员管理",pid=0 },
                 new Enum(){ id=2,Name="人员添加",pid=1 },
                 new Enum(){ id=3,Name="人员修改",pid=1 },
               new Enum(){ id=4,Name="菜单管理",pid=0 },
                 new Enum(){ id=5,Name="菜单添加",pid=4 },
                 new Enum(){ id=6,Name="菜单修改",pid=4 },
                     new Enum(){ id=7,Name="菜单修改2",pid=6 }
            };


            List<ResposeEnum> res = GetMenuTree(cds, 0);

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值