第一种方法好些

第二种方法如果中间断开就会成为一级

  private static List<Menu> MenuTree()
{
var menu1 = new Menu { Id = , ParentId = , Name = "aaa" };
var menu2 = new Menu { Id = , ParentId = , Name = "bbb" };
var menu3 = new Menu { Id = , ParentId = , Name = "ccc" };
var menu4 = new Menu { Id = , ParentId = , Name = "ddd" };
var menu5 = new Menu { Id = , ParentId = , Name = "eee" };
var menu6 = new Menu { Id = , ParentId = , Name = "fff" };
var menu7 = new Menu { Id = , ParentId = , Name = "ggg" };
var menu8 = new Menu { Id = , ParentId = , Name = "hhh" };
var menuAll = new List<Menu> { menu1, menu2, menu3, menu4, menu5, menu6, menu7, menu8 };
var menuList = new List<Menu> { menu1, menu2, menu3, menu4, menu5, menu7, menu8 };
//第一种方法
while (true)
{
var idList = menuList.Select(x => x.Id).ToList();
idList.AddRange(menuList.Select(x => x.ParentId).ToList());
idList = idList.Distinct().ToList();
var menus = menuAll.Where(x => idList.Contains(x.Id)).ToList();
if (menus.Count != menuList.Count)
{
menuList = menus;
continue;
} break;
}
       //第二种方法 
var ret = new List<Menu>();
foreach (var menu in menuList)
{
var model = menuList.FirstOrDefault(x => x.Id == menu.ParentId);
if (model == null)
{
ret.Add(menu);
continue;
} model.Children.Add(menu);
} return ret;
}

最新文章

  1. Android studio
  2. Security6:授予权限的思路和一般步骤
  3. 运用webkit绘制渲染页面原理解决iscroll4闪动的问题
  4. 从零自学Hadoop(07):Eclipse插件
  5. 重读C#委托、事件有感
  6. mysql 在linux 修改账号密码
  7. c# winform 全角自动转化半角问题(C#中ImeMode的值):转载
  8. web设计经验&lt;九&gt;教你测试手机网页的5大方法
  9. web.xml中contextConfigLocation的作用
  10. CodeForces 135 B. Rectangle and Square(判断正方形和 矩形)
  11. php nl2br() 函数
  12. 使用Xcode Instruments Leak解决内存泄漏问题
  13. html简单定位
  14. STM32开发指南-DMA
  15. 使用 Router 实现的模块化,如何优雅的回到主页面
  16. dede从www跟目录迁移,网站空间
  17. Django 简介
  18. SpringBoot集成spring-data-jpa注入Bean失败
  19. 【arc073e】Ball Coloring(线段树,贪心)
  20. springboot集成mybatis环境搭建以及实现快速开发微服务商品模块基本的增删改查!

热门文章

  1. spring cloud微服务快速教程之(七) Spring Cloud Alibaba--nacos(一)、服务注册发现
  2. 浅谈CC攻击原理与防范
  3. 使用Java, AppleScript对晓黑板进行自动打卡
  4. 【转载】wav文件格式分析与详解
  5. 基于 HTML5 和 Canvas 实现的 3D 垃圾分类系统
  6. Nginx之常用基本配置
  7. new function 到底做了什么?如何自己实现new function
  8. ORACLE ANALYZE使用小结
  9. python实现串口通讯小程序(GUI界面)
  10. Python核心编程:《8个实践性建议》