多级菜单读取(可读无限深度、级别)

该博客介绍了如何使用C#通过递归方式读取并存储无限深度的多级菜单,方法能够获取所有菜单项,并将数据转化为JSON格式。适合需要处理复杂层级结构的场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

采用递归方式

复杂一点,方法可以读取所有菜单。
读取全部菜单存入list,返回json。
可自行增减功能

public class RoadFlowTree
{
    // state:节点状态,'open' 或 'closed',默认:'open'。如果为'closed'的时候,将不自动展开该节点。 checked:表示该节点是否被选中。 attributes: 被添加到节点的自定义属性。
    //id
    public int id { get; set; }
    //名称
    public string text { get; set; }
    //节点状态
    public string state { get; set; }


    //子集
    public List<RoadFlowTree> children
    { get; set; }


    /// <summary>
    /// 获取部门类型树
    /// </summary>
    /// <returns></returns>
    public static string GetTreeRoadFlow()
    {
        List<int> rootID = new List<int>();
        List<RoadFlowTree> roadFlowTrees = new List<RoadFlowTree>();
        RoadFlowTree RoadFlowTree = new RoadFlowTree();
        //获取菜单中所有一级菜单
        List<T> rootid = GetAll().Where(s => s.ParentId == 0).OrderByDescending(s => s.DepartId).ToList();
        foreach (var root in rootid)
        {
			RoadFlowTree.id = root.id;
			RoadFlowTree.text = root.text;
			RoadFlowTree.state = "open";
			RoadFlowTree.children = GetChildTree(root.DepartId);
			roadFlowTrees.Add(RoadFlowTree);
        }
        string jsons = Newtonsoft.Json.JsonConvert.SerializeObject(roadFlowTrees);
        return jsons;
    }

    private static List<RoadFlowTree> GetChildTree(int parentID)
    {
        List<RoadFlowTree> roadFlowTrees = new List<RoadFlowTree>();
        var childs = GetByParentId(parentID);
        foreach (var child in childs)
        {
            RoadFlowTree RoadFlowTree = new RoadFlowTree();
            RoadFlowTree.id = child.id;
            RoadFlowTree.text = child.text;
            RoadFlowTree.children = GetChildTree(child.DepartId);
            if (RoadFlowTree.children.Count > 0)
            {
                RoadFlowTree.state = "closed";
            }
            roadFlowTrees.Add(RoadFlowTree);
        }
        return roadFlowTrees;
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值