/// <summary> /// 递归菜单 /// </summary> /// <param name="menus">菜单集合</param> /// <param name="menu">父级菜单</param> /// <returns>结果</returns> private static IEnumerable <EsayUIMenu> CreateChildTree(IEnumerable <TMenu> menus, EsayUIMenu menu) { List <EsayUIMenu> nodeList = new List <EsayUIMenu>(); var mMenus = menus as TMenu[] ?? menus.ToArray(); var children = mMenus.Where(item => item.ParentId == menu.MenuId); foreach (var item in children) { EsayUIMenu node = new EsayUIMenu { MenuId = item.Id, MenuName = item.MenuName, Icon = item.MenuIcon, Url = item.MenuUrl }; node.Menus = CreateChildTree(mMenus, node); nodeList.Add(node); } return(nodeList); }
/// <summary> /// 递归菜单 /// </summary> /// <param name="menus">菜单集合</param> /// <param name="menu">父级菜单</param> /// <returns>结果</returns> private static IEnumerable <EsayUIMenu> CreateChildTree(IEnumerable <MMenu> menus, EsayUIMenu menu) { List <EsayUIMenu> nodeList = new List <EsayUIMenu>(); var mMenus = menus as MMenu[] ?? menus.ToArray(); var children = mMenus.Where(item => item.ParentId == menu.menuid); foreach (var item in children) { EsayUIMenu node = new EsayUIMenu { menuid = item.Id, menuname = item.Title, url = item.Url, icon = item.Icon }; node.menus = CreateChildTree(mMenus, node); nodeList.Add(node); } return(nodeList); }
/// <summary> /// 对象转化 /// </summary> /// <param name="menus">MMenu</param> /// <param name="type">菜单类型</param> /// <returns>EsayUIMenu</returns> public static IEnumerable <EsayUIMenu> ToEsayUIMenus(this IEnumerable <TMenu> menus, int type) { var mMenus = menus as TMenu[] ?? menus.ToArray(); var drList = mMenus.Where(item => item.ParentId == Guid.Empty).Select(item => item.Id); var enumerable = drList as Guid[] ?? drList.ToArray(); var drData = enumerable.Any() ? mMenus.Where(item => enumerable.Contains(item.ParentId)) : mMenus.Where(item => item.ParentId == MenuService.QueryDefaultParentId(type)); List <EsayUIMenu> rootNode = new List <EsayUIMenu>(); foreach (var item in drData) { EsayUIMenu esayUIMenu = new EsayUIMenu { MenuId = item.Id, MenuName = item.MenuName, Icon = item.MenuIcon, Url = item.MenuUrl }; esayUIMenu.Menus = CreateChildTree(mMenus, esayUIMenu); rootNode.Add(esayUIMenu); } return(rootNode); }