public ActionResult Index() { TestEntities tn = new TestEntities(); List<ly> lylist = tn.ly.ToList(); //ViewBag.lyparent = lylist.Where(a => a.ParentId == null).ToList(); // ViewBag.alllist = lylist; List<MyTreeNode> mtn = ParseTree(lylist); ViewBag.alllist = mtn; return View(); }
/// <summary> /// 解析成一个树的结构 /// </summary> /// <param name="lylist"></param> public List<MyTreeNode> ParseTree(List<ly> lylist) { List<MyTreeNode> mytn = new List<MyTreeNode>(); //第一步:先把根节点拿到 foreach (ly item in lylist.Where(a=>a.ParentId==null)) { MyTreeNode myn = new MyTreeNode(); myn.content = item; myn.level = 1; mytn.Add(myn); } //第二步:为每个子节点找到对应的父亲 foreach (ly item in lylist.Where(a=>a.ParentId!=null)) { FindParent(mytn,item); } return mytn; } /// <summary> /// 为每个子节点找到对应的父亲 /// </summary> /// <param name="_mytn"></param> /// <param name="_item"></param> public void FindParent(List<MyTreeNode> _mytn, ly _item) { foreach (MyTreeNode item in _mytn) { if (item.content.Id == _item.ParentId) //表示父亲已经找到了 { if (item.child == null) { item.child = new List<MyTreeNode>(); } MyTreeNode node = new MyTreeNode(); node.content = _item; node.level = item.level + 1; item.child.Add(node); return; } //如果该节点还有子节点,继续找 if (item.child != null) { FindParent(item.child, _item); } } } } public class MyTreeNode { public ly content { get; set; } public int level { get; set; } public List<MyTreeNode> child { get; set; } } }
前台代码
@{ List<MyTreeNode> alllist = ViewBag.alllist as List<MyTreeNode>; @parseTree(alllist); } @helper parseTree(List<MyTreeNode> alllist) { foreach (MyTreeNode item in alllist) { <div style="margin-left:@(item.level*20)px">@item.content.Content</div> if(item.child!=null) { @parseTree(item.child); } } }
递归之无限极评论
最新推荐文章于 2023-02-20 15:01:45 发布