递归之无限极评论

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);
        }
    }
    
 }




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值