zoukankan      html  css  js  c++  java
  • C#实现无限层级树

    namespace Test
    {
        class Program
        {
            static void Main(string[] args)
            {
                var list = new List<Menu>()
                {
                    new Menu () { Id = 1, Name = "主菜单1", PId = 0  },
                    new Menu () { Id = 2, Name = "下级菜单11", PId = 1  },
                    new Menu () { Id = 3, Name = "主菜单2", PId = 0  },
                    new Menu () { Id = 4, Name = "下级菜单21", PId = 3 },
                    new Menu () { Id = 5, Name = "下下级菜单212", PId = 4  }
                };
    
                var dictMenus = new Dictionary<int, Menu>(list.Count);
    
                foreach (var menu in list)
                {
                    dictMenus.Add(menu.Id, menu);
                }
    
                foreach (var value in dictMenus.Values)
                {
                    if (dictMenus.ContainsKey(value.PId))
                    {
                        if (dictMenus[value.PId].Children == null)
                            dictMenus[value.PId].Children = new List<Menu>();
                        dictMenus[value.PId].Children.Add(value);
                    }
                }
                var result = dictMenus.Values.Where(t => t.PId == 0).ToList();
            }
        }
    
        public class Menu
        {
            public int Id { get; set; }
            public string Name { get; set; }
            public int PId { get; set; }
            public List<Menu> Children { get; set; }
        }
    }
  • 相关阅读:
    Qt之加载QSS文件
    Qt之QSS(黑色炫酷)
    Sublime Text 2 快捷键
    QTablewidget 简单例子
    QTableview 只显示横向线
    Qt删除文件夹
    Ubuntu(Debian)apt-get
    C++中char*与wchar_t*之间的转换
    Qtl和JS、HTML通信/交互
    浅谈Socket编程
  • 原文地址:https://www.cnblogs.com/xiaowangzhi/p/9016358.html
Copyright © 2011-2022 走看看