二維表轉樹結構
阿新 • • 發佈:2019-03-29
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; } }
二維表轉樹結構