用递归形成树结构数据
定义一个树形实体
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
用递归形成树结构数据相关推荐
- Java递归实现树结构(包含Java 8 方法)
递归实现树结构数据 一.递归概念:自己的理解,自己调用自己,何为自己调用自己,比如 下面的**chilMenus.add(buildChilTree(menuNode))**就是在自己调用自己,查询到 ...
- JS 递归树结构数据查找所有叶子节点
JS 递归树结构数据查找所有叶子节点 export function getAllLeaf (data) {let result = []function getLeaf (data) {data.f ...
- java ztree json_java递归实现ztree树结构数据展示
//获得zTree结构的数据(测试AuthInfo) @RequestMapping("/getAuthInfoTree.action") public void getAuthI ...
- java - poi递归导出树结构Excel,导入树结构Excel,树结构递归查询,新增,修改,删除
工作中设计树结构增删改查,导入,导出操作,搜索 POI导入导出树结构Excle 相关博客较少,故写博客用以记录分享. 文章目录 一.表结构设计,导入导出模板. 二.递归查询树结构 1.思路如下 2.代 ...
- es6遍历树结构并判断_递归遍历树结构,从某个节点开始查找其子节点中的所有叶子节点...
背景 现在项目中哟这样的一个需求,左边显示一棵树目录,点击目录的一级或二级节点,右边显示其子节点中的所有叶子节点,而且要求前端来做这个,不用调用接口请求了,那么,这里记录一下我的实现方法.点击叶子节点 ...
- oracle 根据符号分列,oracle 树结构数据层次分列显示
在实际应用中, 树结构数据的应用是很广泛的, 如书的目录结构, 组织部门的分级等!!!!! 如一本书的目录 name code P_code 目录 MULU 0 第一章 zh_1 MULU 第一节 j ...
- redis存储树结构数据
本文主要讲解两方面内容:1.redis如何存储树结构数据.2.java操作redis时选取哪种序列化器. 1. redis如何存储树结构数据 先抛出结论,树结构数据在redis中的存储形式如下: 1. ...
- vue 根据属性过滤树结构数据
如下为树结构数据,需要根据属性id 获取匹配的值 // 树结构数据export default {data() {return {searchId: 9,treeData: [{id: 1,label ...
- java递归mysql生成树_java递归生成树结构的数据
@Data @EqualsAndHashCode(callSuper =true) @ApiModel(value = "AccountCaptionVo", descriptio ...
最新文章
- 【单片机】以输出方波为例的 定时器使用
- opencv 无法找到tbb_debug.dll
- golang中的Session支持
- access和SQL的区别
- AfxBeginThread
- 收银机多少钱一台推荐科脉系统_防火门监控系统安装预算多少钱?防火门监控系统安装预算表[今日推荐]...
- android中使用startActivityForResult回传数据
- 各大公司容器云的技术栈对比
- 神奇却又随处可见的斐波那契曲线...
- 通信与计算机网络FSC,数据通信与计算机网络概述信道习题.pdf
- python3 上传文件到目标机器_通过python模块实现服务器和本地机器之间快速拷贝文件...
- 如何将dwt模板移到php,ECSHOP模板文件(dwt)在线编辑器 | Jacklee的博客
- python网课什么平台好-这些AI课网课最具人气!不仅免费、系统,还附带链接 | 资源...
- comsol操作技巧
- python除法程序_Python中的除法
- python中shelf_在python 3中使用python 2 shelf
- ip 检测原理(简单粗暴ping ip)
- 面试时,问你有什么缺点,到底该怎么回答?我总结了“3个3”
- input输入框事件流程变化
- 为什么大部分公司的数据库系统仍然要使用oracle?
热门文章
- 51nod 1100:斜率最大
- 【懒癌发作】收集各种懒癌发作时用程序写作业的程序
- cordova 项目添加splash启动界面
- UVA 125 Numbering Paths
- js文件中调用另一个js文件:
- 弹出VIEW.非dialog
- c#,xp系统,Matlab6.5
- MongoDB第二天
- [Spark][Python]Spark 访问 mysql , 生成 dataframe 的例子:
- Machine Learning from Start to Finish with Scikit-Learn