C# 当前节点最下级节点,最深的节点,递归

需求:取默认第一个根节点下,最下级节点。最深的节点。动态树。

//已知树泛型集合,顶级节点 RootItems
public List<MenuItem1> MainDataSourceMenuItem;  

public List<MenuItem1> MainDataSourceMenuItemAll;

    public  MenuItem1 SecurityMenuItemModel;
  protected void Page_Load(object sender, EventArgs e)
    {
     if (!IsPostBack)
        {
        已知数据源
List<MenuItem1>  RootItems=   //根节点泛型集合
        ///若没有二级  整个这个包起来 再判断 
        if (liststringtemp.Count() > 1)
                        {
                          List<string>  liststringtemp=   Request.QueryString["app"].Split(new char[] { ',', ',' }, StringSplitOptions.RemoveEmptyEntries).ToList(); 
                            APPcodesystrm = liststringtemp.Skip(0).Take(1).FirstOrDefault(); //获取子系统  
                            foreach ( var RootItemstemp in  RootItems)
                            {
                                if (RootItemstemp.Id == int.Parse(APPcodesystrm) )
                                {
                                    MainDataSourceMenuItem =  RootItems.Where(x => x.Id == RootItemstemp.Id).FirstOrDefault().Items;
                                }
                            } 
                        }
                        else  //子系统 值丢失
                        {
                            MainDataSourceMenuItem = RootItems.FirstOrDefault().Items;
                        } 
MainDataSourceMenuItemAll =    // 这里去拿数据中该人的所有有树   
                    SecurityMenuItemModel = MainDataSourceMenuItem.FirstOrDefault();
                       //调递归  核心思路
                    selectlowtree(SecurityMenuItemModel); 
        }
    }

 /// <summary>
    ///   最深的节点 调递归
    /// </summary>
    /// <param name="MainDataSourceMenuItem"></param>

    public void selectlowtree(MenuItem1 SecurityMenuItemModel)
    { 
        foreach (MenuItem1 node in MainDataSourceMenuItemAll)
        {
            //从所有权限的菜单 以自己为顶节点找的自己的树菜单
            if (SecurityMenuItemModel.Id == node.Id)
            { 
                //父节点有子节点就调 自己   有父就就子 
                if (node.Items.Count > 0)  //&& node.ParentId==0 更具业务需要在看这个
                 { 
                  //因为最终要找node id 找下级节点
                selectlowtree(node.Items.FirstOrDefault());   //核心思路
                 }
                 else   //最后一个不等于peaerntde 
                 { 
//SecurityMenuItemModel 
                = SecurityMenuItemModel.Name ?? "";
              
                  }

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

云草桑

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值