定义一个树形实体

        public class orgTrees{public orgTrees(){this.Children = new List<orgTrees>();}public int Id { get; set; }public int FatherId { get; set; }public string Name { get; set; }public int Lever { get; set; }public bool HasChildren { get; set; }public string OrgCode;public int OrgType;public List<orgTrees> Children { get; set; }}

开始递归方法

 1         /// <summary>
 2         /// 获取组织层级树
 3         /// </summary>
 4         /// <returns></returns>
 5         public AjaxResponse<orgTrees> GetOrgTrees()
 6         {
 7             var list = new List<orgTrees>();
 8             var orgLayerList = _organizeProxy.ListOrgInfoForManage();
 9
10             var dic = new Dictionary<int, orgTrees>(orgLayerList.Count);
11             foreach (var item in orgLayerList)
12             {
13                 dic.Add(item.Info.Id, new orgTrees
14                 {
15                     Id = item.Info.Id,
16                     FatherId = item.Info.FatherId,
17                     Name = item.Info.Name.GetValueByLanId(WorkContext.WorkingLanguage.Id),
18                     Lever = item.Layer,
19                     OrgCode = item.Info.OrgCode,
20                     OrgType = item.Info.OrgType,
21                 });
22             }
23
24             //根节点
25             var rootNode = orgLayerList.Where(x => x.Info.FatherId.Equals(-1)).First();
26             var model = new orgTrees();
27             model.Id = rootNode.Info.Id;
28             model.FatherId = rootNode.Info.FatherId;
29             model.Name = rootNode.Info.Name.GetValueByLanId(WorkContext.WorkingLanguage.Id);
30             model.Lever = rootNode.Layer;
31             model.OrgCode = rootNode.Info.OrgCode;
32             model.OrgType = rootNode.Info.OrgType;
33             model.HasChildren = rootNode.HasChildren;
34             CreatTree(model.Id, model, orgLayerList);
35             return new AjaxResponse<orgTrees>(model);
36         }
37         //生成树的方法
38         public void CreatTree(int parentId, orgTrees tree, LayerList<OrganizeInfo> laerList)
39         {
40             //获取子节点
41             var childrenNode = laerList.ToList().FindAll(x => x.Info.FatherId == Convert.ToInt32(parentId));
42             //如果没有字节点了,那就返回空
43             if (childrenNode.Count == 0) return;
44             List<orgTrees> nodeTrees = new List<orgTrees>();
45             for (int i = 0; i < childrenNode.Count; i++)
46             {
47                 orgTrees node = new orgTrees();
48                 node.Id = childrenNode[i].Info.Id;
49                 node.Name = childrenNode[i].Info.Name.GetValueByLanId(WorkContext.WorkingLanguage.Id);
50                 node.FatherId = childrenNode[i].Info.FatherId;
51                 node.Lever = childrenNode[i].Layer;
52                 node.OrgCode = childrenNode[i].Info.OrgCode;
53                 node.OrgType = childrenNode[i].Info.OrgType;
54                 node.HasChildren = childrenNode[i].HasChildren;
55                 //递归
56                 CreatTree(childrenNode[i].Info.Id, node, laerList);
57                 nodeTrees.Add(node);
58             }
59             tree.Children = nodeTrees; //由于对象是引用类型,因为可以改变参数的值
60         }

说下思路就是 先把根节点找出来,然后寻找根节点的子节点 然后递归循环子节点,寻找子节点的子节点

最后生成的是就是

转载于:https://www.cnblogs.com/dzhengyang/p/8515826.html

用递归形成树结构数据相关推荐

  1. Java递归实现树结构(包含Java 8 方法)

    递归实现树结构数据 一.递归概念:自己的理解,自己调用自己,何为自己调用自己,比如 下面的**chilMenus.add(buildChilTree(menuNode))**就是在自己调用自己,查询到 ...

  2. JS 递归树结构数据查找所有叶子节点

    JS 递归树结构数据查找所有叶子节点 export function getAllLeaf (data) {let result = []function getLeaf (data) {data.f ...

  3. java ztree json_java递归实现ztree树结构数据展示

    //获得zTree结构的数据(测试AuthInfo) @RequestMapping("/getAuthInfoTree.action") public void getAuthI ...

  4. java - poi递归导出树结构Excel,导入树结构Excel,树结构递归查询,新增,修改,删除

    工作中设计树结构增删改查,导入,导出操作,搜索 POI导入导出树结构Excle 相关博客较少,故写博客用以记录分享. 文章目录 一.表结构设计,导入导出模板. 二.递归查询树结构 1.思路如下 2.代 ...

  5. es6遍历树结构并判断_递归遍历树结构,从某个节点开始查找其子节点中的所有叶子节点...

    背景 现在项目中哟这样的一个需求,左边显示一棵树目录,点击目录的一级或二级节点,右边显示其子节点中的所有叶子节点,而且要求前端来做这个,不用调用接口请求了,那么,这里记录一下我的实现方法.点击叶子节点 ...

  6. oracle 根据符号分列,oracle 树结构数据层次分列显示

    在实际应用中, 树结构数据的应用是很广泛的, 如书的目录结构, 组织部门的分级等!!!!! 如一本书的目录 name code P_code 目录 MULU 0 第一章 zh_1 MULU 第一节 j ...

  7. redis存储树结构数据

    本文主要讲解两方面内容:1.redis如何存储树结构数据.2.java操作redis时选取哪种序列化器. 1. redis如何存储树结构数据 先抛出结论,树结构数据在redis中的存储形式如下: 1. ...

  8. vue 根据属性过滤树结构数据

    如下为树结构数据,需要根据属性id 获取匹配的值 // 树结构数据export default {data() {return {searchId: 9,treeData: [{id: 1,label ...

  9. java递归mysql生成树_java递归生成树结构的数据

    @Data @EqualsAndHashCode(callSuper =true) @ApiModel(value = "AccountCaptionVo", descriptio ...

最新文章

  1. 【单片机】以输出方波为例的 定时器使用
  2. opencv 无法找到tbb_debug.dll
  3. golang中的Session支持
  4. access和SQL的区别
  5. AfxBeginThread
  6. 收银机多少钱一台推荐科脉系统_防火门监控系统安装预算多少钱?防火门监控系统安装预算表[今日推荐]...
  7. android中使用startActivityForResult回传数据
  8. 各大公司容器云的技术栈对比
  9. 神奇却又随处可见的斐波那契曲线...
  10. 通信与计算机网络FSC,数据通信与计算机网络概述信道习题.pdf
  11. python3 上传文件到目标机器_通过python模块实现服务器和本地机器之间快速拷贝文件...
  12. 如何将dwt模板移到php,ECSHOP模板文件(dwt)在线编辑器 | Jacklee的博客
  13. python网课什么平台好-这些AI课网课最具人气!不仅免费、系统,还附带链接 | 资源...
  14. comsol操作技巧
  15. python除法程序_Python中的除法
  16. python中shelf_在python 3中使用python 2 shelf
  17. ip 检测原理(简单粗暴ping ip)
  18. 面试时,问你有什么缺点,到底该怎么回答?我总结了“3个3”
  19. input输入框事件流程变化
  20. 为什么大部分公司的数据库系统仍然要使用oracle?

热门文章

  1. 51nod 1100:斜率最大
  2. 【懒癌发作】收集各种懒癌发作时用程序写作业的程序
  3. cordova 项目添加splash启动界面
  4. UVA 125 Numbering Paths
  5. js文件中调用另一个js文件:
  6. 弹出VIEW.非dialog
  7. c#,xp系统,Matlab6.5
  8. MongoDB第二天
  9. [Spark][Python]Spark 访问 mysql , 生成 dataframe 的例子:
  10. Machine Learning from Start to Finish with Scikit-Learn