递归求树状列表

        public List<ModelTestDept> getTrees(int parentid, List<ModelTestDept> nodes)
        {
            List<ModelTestDept> mainNodes = nodes.Where(x => x.ParentId == parentid).ToList<ModelTestDept>();
            List<ModelTestDept> otherNodes = nodes.Where(x => x.ParentId != parentid).ToList<ModelTestDept>();
            foreach (ModelTestDept dpt in mainNodes)
            {
                dpt.Nodes = getTrees(dpt.Id.Value, otherNodes);
            }
            return mainNodes;

        }

       

求所有父类节点:

         public List<ModelTestDept> FilterDeptParents(List<ModelTestDept> list, int deptId)
        {
            List<ModelTestDept> parents = new List<ModelTestDept>();
            var dept = list.FirstOrDefault(x => x.Id == deptId);
            if (dept != null)
            {
                parents.Add(dept);
                if (dept.ParentId.HasValue)
                {
                    parents.AddRange(FilterDeptParents(list, dept.ParentId.Value));
                }
            }
            return parents;
        }



猜你喜欢

转载自blog.csdn.net/july_young/article/details/79798967