C#-递归处理权限/菜单树形数据

2 篇文章 0 订阅

前端应该有很多控件可以递归菜单表数据 但是自己在后端也可以把数据封装成树形结构的数据

数据结构

 public class T_ADC_Permission : BaseModel
    {
        public string Id { get; set; }
        public string Code { get; set; }
        public string Name { get; set; }
        public string ParentId { get; set; }
        public bool IsAuthorize { get; set; }
        public string Descript { get; set; }
        public string Remark { get; set; }
        public string Remark2 { get; set; }
        public bool IsDelete { get; set; }
        public byte[] Version { get; set; }
        /// <summary>
        /// 0:菜单级 , 1:按钮级
        /// </summary>
        public int Type { get; set; }

        /// <summary>
        /// 子权限
        /// </summary>
        public virtual List<T_ADC_Permission> SonPermissions{get;set;}
    }

封装

   public List<T_ADC_Permission> ShowPermissionsListWithTree(bool isMenu)
        {
            using (SqlConnection con = BaseDAL.ConnectionFactory())
            {
                string sql = @"select * from T_ADC_Permission";
                if (isMenu)
                    sql += " where Type=0 ";
                List<T_ADC_Permission> list = con.Query<T_ADC_Permission>(sql).ToList();
                List<T_ADC_Permission> result = new List<T_ADC_Permission>();
                result.AddRange(list.Where(p => p.ParentId.Equals("-1")).ToList());
                foreach (var el in result)
                {
                    AddPermission(list, el);
                }
                return result;
            }
        }
        /// <summary>
        /// 从某个根节点递归出其下所有子节点
        /// </summary>
        /// <param name="list">所有权限</param>
        /// <param name="curPermission">当前权限</param>
        public void AddPermission(List<T_ADC_Permission> list, T_ADC_Permission curPermission)
        {
            List<T_ADC_Permission> sonPermissions = list.Where(p => p.ParentId.Equals(curPermission.Id)).ToList();
            curPermission.SonPermissions = sonPermissions;
            foreach (var p in sonPermissions)
            {
                AddPermission(list, p);
            }
        }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值