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; }
        }
    }
  • 相关阅读:
    做了点数论的题
    2016日报总结
    2016在H3C
    2017春节小目标
    2016项目小总结
    明明的随机数
    计算字符个数
    字符串最后一个单词的长度
    字符串分隔
    考研回忆
  • 原文地址:https://www.cnblogs.com/xiaowangzhi/p/9016358.html
Copyright © 2011-2022 走看看