C# 查询菜单、部门等表 树形结构写法

要求:
一个菜单表
里面有个父菜单和子菜单,最外一层的是最大的父菜单,如何是一层一层的子菜单,如图所示:
在这里插入图片描述
菜单数据库表中有个MenuCode 和 MenuCodeFather 对应关系,
例如菜单4,5,6的MenuCodeFather等于菜单3的MenuCode
菜单7,8的 MenuCodeFather等于菜单4的MenuCode

做法:
1.查询出来所有的菜单并放到一个集合中
2.将这个集合轮询,把集合满足集合中MenuCodeFather字段等于MenuCode字段的放到本身
3.把最外一层显示出来,其他过滤掉

public List<MenuDto> GetAllListMenus()
{
	// 1.获取所有菜单
    var menuAll = _menuRepository.Where(m => m.IsDelet == false).ToList();
    List<MenuDto> menuDtoList = new List<MenuDto>();
    foreach (var menu in menuAll)
    {
        var menuDtomp = menu.Adapt<MenuDto>();//映射方法
        menuDtoList.Add(menuDtomp);
    }
    // 2.将这个集合轮询,把集合满足集合中MenuCodeFather字段等于MenuCode字段的放到本身
    foreach (var menu in menuDtoList)
    {
        menu.MenuChild = menuDtoList.FindAll(i => i.MenuCodeFather == menu.MenuCode);
    }
    // 3.把最外一层显示出来,其他过滤掉
    menuDtoList = menuDtoList.FindAll(m => string.IsNullOrEmpty(m.MenuCodeFather));
    return menuDtoList;
}

PS:
MenuDto 这个实体里面要放一个子菜单实体集合,参考如下:

public class MenuDto : Entity
{
    /// <summary>
    /// 菜单名称
    /// </summary>

    public string MenuName { get; set; }
    /// <summary>
    /// 菜单编码
    /// </summary>
    public string MenuCode { get; set; }
    /// <summary>
    /// 父菜单编码
    /// </summary>
    public string MenuCodeFather { get; set; }
	/// <summary>
    /// 子菜单集合
    /// </summary>
    public List<MenuDto> MenuChild { get; set; }
}
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值