把LIST递归成树形结构

时间:2020-01-07
本文章向大家介绍把LIST递归成树形结构,主要包括把LIST递归成树形结构使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

1.创建类

    public class Node
    {
        public bool leaf { get; set; }
        public int FolderID { get; set; }
        public string iconCls { get; set; }
        public bool editable { get; set; }
        public bool expanded { get; set; }
        public int ParentFolderID { get; set; }
        public string text { get; set; }
        public bool InheritPerm { get; set; }
        //public string CreateDate { get; set; }
        //public string CreateBy { get; set; }
        public Node[] children { get; set; }
    }

2.从数据库获取数据转化成LIST

3.递归构建树形结构

        public static string GetTree(List<Node> nodes)
        {
            var list = nodes.FindAll(a => a.ParentFolderID == 1);//最顶级的目录
            foreach (var node in list)
            {
                if (node.text == "01.通讯录")
                {
                    node.children = new Node[] { };//必须为空数组,不能为NULL,否则前端树节点会有错误
                }
                GetTree(node, nodes);
            }
            return JsonConvert.SerializeObject(list);
        }


        public static void GetTree(Node paretnNode, List<Node> nodes)
        {
            List<Node> nodelist = new List<Node>();
            foreach (var node in nodes)
            {
                if (node.ParentFolderID == paretnNode.FolderID)
                {
                    GetTree(node, nodes);
                    if (node.children == null)
                    {
                        node.children = new Node[] { };//必须为空数组,不能为NULL,否则前端树节点会有错误
                    }
                    nodelist.Add(node);
                    paretnNode.children = nodelist.ToArray();
                }
            }
        }

原文地址:https://www.cnblogs.com/xielideboke/p/12161453.html