C#实现一颗树!

 1:  static List<Entity.OA.Department> entitiesList = null;
 2:   
 3:          internal static void Reload()
 4:          {
 5:              entitiesList = (from pc in iDepartmentsRepository.GetDepartments()
 6:                              orderby pc.DeptName ascending
 7:                              select pc).ToList();
 8:          }
 9:   
10:          #region 树型部门列表
11:          /// <summary>
12:          /// 虚拟产品类别 
13:          /// </summary>
14:          /// <returns>虚拟产品类别列表</returns>
15:          public static Entity.OA.Department GetTree()
16:          {
17:              Reload();
18:              Entity.OA.Department root = new Entity.OA.Department();
19:              try
20:              {
21:                  root = entitiesList.Single(
22:                     item => item.DeptID.Equals(Entity.OA.Department.ROOTID));//获取跟节点
23:                  GetSubs(root);
24:   
25:              }
26:              catch (InvalidOperationException ex)
27:              {
28:                  ex.ToString();
29:              }
30:              return root;
31:          }
32:   
33:   
34:          /// <summary>
35:          /// 根据父对象,找到子孙树
36:          /// </summary>
37:          /// <param name="father">父对象</param>
38:          static public void GetSubs(Entity.OA.Department father)
39:          {
40:              father.SubList = entitiesList.Where(item =>
41:                  item.ParentID.Equals(father.DeptID)).ToList();
42:              father.SubList.ForEach(item =>
43:              {
44:                  item.Father = father;
45:                  GetSubs(item);      
46:              });
47:   
48:          }
49:          #endregion
posted @   张占岭  阅读(623)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示
点击右上角即可分享
微信分享提示