public async Task <List <Menu> > GetRoleMenuListAsync(int iUserId, string sOperator = null) { List <Menu> lstMenu = new List <Menu>(); UserInfo entityUserInfo = await _userInfoService.SelectAsync(iUserId); if (entityUserInfo != null) { //查询用户拥有角色集合 List <UserRole> lstUserRoleList = await _userRoleService.SelectALLAsync(new UserRole() { IuserId = iUserId }); List <RoleMenu> lstRoleMenu = new List <RoleMenu>(); //查询角色所拥有的菜单集合 if (lstUserRoleList?.Count > 0) { foreach (UserRole entityUserRole in lstUserRoleList) { List <RoleMenu> lstRoleMenuList = await _roleMenuService.SelectALLAsync(new RoleMenu() { IroleId = entityUserRole.IroleId }); if (lstRoleMenuList?.Count > 0) { lstRoleMenu.AddRange(lstRoleMenuList); } } //去重 lstRoleMenu = lstRoleMenu.Where((x, i) => lstRoleMenu.FindIndex(z => z.ImenuId == x.ImenuId) == i).ToList(); //获取菜单 if (lstRoleMenu.Count > 0) { foreach (RoleMenu entityRoleMenu in lstRoleMenu) { Menu entityMenu = await _menuRepository.SelectAsync(entityRoleMenu.ImenuId); if (entityMenu != null) { if (entityMenu.Bdisplay.Value == false) { lstMenu.Add(entityMenu); } } } } } } return(lstMenu); }