zoukankan      html  css  js  c++  java
  • .net list转树状结构

    主要的方法

     1        /// <summary>
     2         /// 转化成树结构
     3         /// </summary>
     4         /// <param name="menuList">菜单的平级list</param>
     5         /// <returns></returns>
     6         private List<AbpMenuModel> GetTreeParent(List<AbpMenuDto> menuList)
     7         {
     8             var dic = new Dictionary<long, AbpMenuModel>(menuList.Count);
     9             foreach (var chapter in menuList)
    10             {
    11                 dic.Add(chapter.Id, new AbpMenuModel { Id = chapter.Id, Title = chapter.Title, Path = chapter.Path, ParentId = chapter.ParentId, Icon = chapter.Icon });
    12             }
    13             foreach (var chapter in dic.Values)
    14             {
    15                 if (dic.ContainsKey(chapter.ParentId.Value))
    16                 {
    17                     if (dic[chapter.ParentId.Value].Children == null)
    18                     {
    19                         dic[chapter.ParentId.Value].Children = new List<AbpMenuModel>();
    20 
    21                     }
    22                     dic[chapter.ParentId.Value].Children.Add(chapter);
    23                 }
    24             }
    25             return dic.Values.Where(t => t.ParentId == 0).ToList();
    26         }

    转换前的类

        [AutoMapTo(typeof(AbpMenuDto))]
        public class AbpMenuDto : EntityDto<long>
        {
            /// <summary>
            /// 路径
            /// </summary>
            public string Path { get; set; }
            /// <summary>
            /// 菜单名
            /// </summary>
            public string Title { get; set; }
            /// <summary>
            /// 图标
            /// </summary>
            public string Icon { get; set; }
    
            /// <summary>
            /// 父级ID
            /// </summary>
            public long? ParentId { get; set; }
            /// <summary>
            /// 类型  菜单(menu) 还是  元素(doc)(按钮等)
            /// </summary>
            public string Type { get; set; }
            /// <summary>
            ///  doc时 的父级下唯一代码
            /// </summary>
            public string Code { get; set; }
    
            /// <summary>
            ///  doc时 的名称
            /// </summary>
            public string Name { get; set; }
        }

    转换后的类

     public class AbpMenuModel : EntityDto<long>
        {
            /// <summary>
            /// 路径
            /// </summary>
            public string Path { get; set; }
            /// <summary>
            /// 菜单名
            /// </summary>
            public string Title { get; set; }
            /// <summary>
            /// 图标
            /// </summary>
            public string Icon { get; set; }
    
            /// <summary>
            /// 父级ID
            /// </summary>
            public long? ParentId { get; set; }
            /// <summary>
            /// 类型  菜单(menu) 还是  元素(doc)(按钮等)
            /// </summary>
            public string Type { get; set; }
            /// <summary>
            ///  doc时 的父级下唯一代码
            /// </summary>
            public string Code { get; set; }
    
            /// <summary>
            ///  doc时 的名称
            /// </summary>
            public string Name { get; set; }
    
            public List<AbpMenuModel> Children { get; set; }
  • 相关阅读:
    iOS-runtime-objc_setAssociatedObject(关联对象以及传值)
    iOS-runtime-根据类名推送到任意控制器,且实现属性传值
    程序员必须知道的git托管平台
    iOS第三方地图-百度地图中心点定位
    nested pop animation can result in corrupted navigation bar
    iOS KVC,KVO
    iOS第三方地图-百度地图定位的封装
    iOS第三方地图-百度地图常用功能使用(POI搜索,地理正反编码,定位,添加标注)
    MJRefresh插件引起的错误
    OC开发_Storyboard——AutoLayout
  • 原文地址:https://www.cnblogs.com/LmuQuan/p/11233684.html
Copyright © 2011-2022 走看看