zoukankan      html  css  js  c++  java
  • 编写一个通用递归获取树形结构对象集合的方法

            /// <summary>
            /// 通用递归获取树状子节点信息
            /// </summary>
            /// <param name="item"></param>
            /// <param name="id"></param>
            /// <returns></returns>
            private List<T> getTreeListByPid<T, F>(List<F> item, long pid, F d) where T : BaseTreeDto<T>, new() where F : BaseTreeDic, new()
            {
                List<T> ItemsDto = new List<T>();
                //限制条件跳出
                if (item.Where(s => s.Pid == pid).Count() > 0)
                {
                    item.Where(s => s.Pid == pid).ToList().ForEach(f =>
                    {
                        ItemsDto.Add(new T { Id = f.Id, Name = f.Name, Item = getTreeListByPid<T, F>(item, f.Id, f) });
                    });
                }
                return ItemsDto;
            }
        public class BaseTreeDto<T>
        {
            public long Id { get; set; }
            public string Name { get; set; }
            public List<T> Item { get; set; }
        }
    
        public class BaseTreeDic
        {
            public long Id { get; set; }
            public string Name { get; set; }
            public string Code { get; set; }
            public long Pid { get; set; }
        }

     调用方式 将头节点筛选出来然后传参进入方法即可(以下是伪代码)

               
    List<T> list = new List<T>(); List<F> item = GetListF(); List<F> tempAllitem = item.Where(i => i.Pid == 0).ToList(); tempAllitem.ForEach(i => { list.Add(new T{ Id = i.Id, Name = i.Name, Item = getTreeListByPid<T, F>(item, i.Id, i) }); });
  • 相关阅读:
    1048 石子归并
    高精度算法小结
    3117 高精度练习之乘法
    UVa 11809
    3115 高精度练习之减法
    3116 高精度练习之加法
    “da shen” in my heart
    爱是怀疑!
    普通disco
    崇拜
  • 原文地址:https://www.cnblogs.com/zzlblog/p/10014907.html
Copyright © 2011-2022 走看看