1. 程式人生 > >二維表轉樹結構

二維表轉樹結構

var move test 學校 ont item clas eth get

 public class UnitTest1
    {
        [TestMethod]
        public void TestMethod1()
        {
            var nodes = new List<Node>()
            {
                new Node { Id = 1, PId = null, Data = "學校"},
                new Node { Id = 2, PId = null, Data = "醫院" },
                
new Node { Id = 3, PId = 1, Data = "小學" }, new Node { Id = 4, PId = 3, Data = "一年級" }, new Node { Id = 6, PId = 4, Data = "張三" }, new Node { Id = 5, PId = 2, Data = "浙江附屬醫院" }, }; ToTree(nodes); }
public void ToTree(List<Node> nodes,Node node=null) { if (node == null) { var parents = nodes.FindAll(f => f.PId == null); foreach (var item in parents) { ToTree(nodes,item); } }
else if (nodes.Exists(f => f.PId == node.Id)) { var childs = nodes.FindAll(f => f.PId == node.Id); node.Childs = childs; nodes.RemoveAll(a => childs.Contains(a)); foreach (var item in childs) { ToTree(nodes, item); } } } } public class Node { public int? Id { get; set; } public string Data { get; set; } public int? PId { get; set; } public List<Node> Childs { get; set; } }

二維表轉樹結構