主要的方法

        /// <summary>
/// 转化成树结构
/// </summary>
/// <param name="menuList">菜单的平级list</param>
/// <returns></returns>
private List<AbpMenuModel> GetTreeParent(List<AbpMenuDto> menuList)
{
var dic = new Dictionary<long, AbpMenuModel>(menuList.Count);
foreach (var chapter in menuList)
{
dic.Add(chapter.Id, new AbpMenuModel { Id = chapter.Id, Title = chapter.Title, Path = chapter.Path, ParentId = chapter.ParentId, Icon = chapter.Icon });
}
foreach (var chapter in dic.Values)
{
if (dic.ContainsKey(chapter.ParentId.Value))
{
if (dic[chapter.ParentId.Value].Children == null)
{
dic[chapter.ParentId.Value].Children = new List<AbpMenuModel>(); }
dic[chapter.ParentId.Value].Children.Add(chapter);
}
}
return dic.Values.Where(t => t.ParentId == ).ToList();
}

转换前的类

    [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; }

.net list转树状结构的更多相关文章

  1. 树状结构Java模型、层级关系Java模型、上下级关系Java模型与html页面展示

    树状结构Java模型.层级关系Java模型.上下级关系Java模型与html页面展示 一.业务原型:公司的组织结构.传销关系网 二.数据库模型 很简单,创建 id 与 pid 关系即可.(pid:pa ...

  2. 分享使用NPOI导出Excel树状结构的数据,如部门用户菜单权限

    大家都知道使用NPOI导出Excel格式数据 很简单,网上一搜,到处都有示例代码. 因为工作的关系,经常会有处理各种数据库数据的场景,其中处理Excel 数据导出,以备客户人员确认数据,场景很常见. ...

  3. 由简入繁实现Jquery树状结构

    在项目中,我们经常会需要一些树状结构的样式来显示层级结构等,比如下图的样式,之前在学.net的时候可以直接拖个服务端控件过来直接使用非常方便.但是利用Jquery的一些插件,也是可以实现这些效果的,比 ...

  4. php实现树状结构无级分类

    php实现树状结构无级分类   ).",'树2-1-1-2')";mysql_query($sql);?>

  5. Android无限级树状结构

    通过对ListView简单的扩展.再封装,即可实现无限层级的树控件TreeView. package cn.asiontang.nleveltreelistview; import android.a ...

  6. 使用Map辅助拼装树状结构,消除递归调用

    目前菜单或其他树状结构在数据库中的存储,多数是以一个parentid作为关联字段,以一维形式存储.使用时全部查询出来,然后在内存中拼装成树状结构.现在主要涉及的是拼装方法的问题. 一般可以进行 递归调 ...

  7. lua 怎样输出树状结构的table?

    为了让游戏前端数据输出更加条理,做了一个简单树状结构来打印数据. ccmlog.lua local function __tostring(value, indent, vmap) local str ...

  8. js List<Map> 将偏平化的数组转为树状结构并排序

    数据格式: [ { "id":"d3e8a9d6-e4c6-4dd8-a94f-07733d3c1b59", "parentId":&quo ...

  9. 浅谈oracle树状结构层级查询之start with ....connect by prior、level及order by

    浅谈oracle树状结构层级查询 oracle树状结构查询即层次递归查询,是sql语句经常用到的,在实际开发中组织结构实现及其层次化实现功能也是经常遇到的,虽然我是一个java程序开发者,我一直觉得只 ...

  10. 浅谈oracle树状结构层级查询测试数据

    浅谈oracle树状结构层级查询 oracle树状结构查询即层次递归查询,是sql语句经常用到的,在实际开发中组织结构实现及其层次化实现功能也是经常遇到的,虽然我是一个java程序开发者,我一直觉得只 ...

随机推荐

  1. Visual Studio调试到OpenCV源码中

    TL;DR VS2015下,build-farm/vs2015-x64/bin/Debug/目录,*.pdb文件,都拷贝到install/x64/vc14/bin目录,就可以调试进去opencv源码了 ...

  2. UDP基础

    UDP主要特点: (1)UDP是无连接的,发送数据不需要建立连接,减少了开销和发送数据之前的时延. (2)UDP使用尽最大努力交付,即不保证可靠交付,因此主机不需要维持连接状态表. (3)UDP面向报 ...

  3. redisTemplate 键值序列化策略

    redisTemplate 键值序列化策略 RedisSerializer<T> StringRedisSerializer JdkSerializationRedisSerializer ...

  4. 分享:手把手教你如何免费且光荣地使用正版IntelliJ IDEA

    https://mp.weixin.qq.com/s/6nRYmn6gAWFLg3mUIN_ojg TIPS 近日在个人技术讨论QQ群里,谈论到IDEA的那些事儿.有童鞋居然在某电商网站花钱买激活码. ...

  5. 网络协议 17 - HTTPDNS

    全球统一的 DNS 是很权威,但是我们都知道“适合自己的,才是最好的”.很多时候,标准统一化的 DNS 并不能满足我们定制的需求,这个时候就需要 HTTPDNS 了.     上一节我们知道了 DNS ...

  6. kali linux 更换镜像源

    编辑sources.list文件 leafpad /etc/apt/sources.list #aliyun 阿里云 deb http://mirrors.aliyun.com/kali kali-r ...

  7. VS2019调试 asp.net core 2.2 出现《ANCM In-Process Handler Load Failure 发布后启动错误处理》处理

      从 google 出来的 github 上  AspNetCore issues 和 stackoverflow 搜到的,百度 博客园搜到的,CSDN 搜到的,统统设置了,不管用.   从这些问题 ...

  8. IE 浏览器设置 打开新的选项卡而不是弹出窗口

    首先打开IE的页面  找到工具 —点击Internet选项

  9. spark 资源动态分配

    'spark.shuffle.service.enabled': 'true', 'spark.dynamicAllocation.enabled': 'false', , , , 'spark.sq ...

  10. 去除img标签函数

    需要去除一个长字符串中的img标签,网上找到了这个代码试试看,确实是有效的.代码如下: <?php function strip_tags_img($string='') { $pattern= ...