C#-遞歸處理權限/菜單樹形數據

前端應該有很多控件可以遞歸菜單表數據 但是自己在後端也可以把數據封裝成樹形結構的數據

數據結構

 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);
            }
        }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章