RemoveAt的用法:
/// <summary>
/// 根据用户名得到对应的菜单 /// </summary> /// <param name="loginname"></param> /// <returns></returns> public List<ApPResourceTable> GetListByLoginName(string loginname) { ZemtProblemManagementDBContext db = new ZemtProblemManagementDBContext();//创建数据库上下文 TUser user = userdal.GetTUser(db, loginname);//根据登陆名获取用户 List<TRoleMenuRelaton> menulist = new List<TRoleMenuRelaton>(); //得到角色集合 List<TUserRoleRelaton> rolelist = roledal.GetRoleListByUserID(db, user.ID.ToString()); foreach (var role in rolelist) { //根据角色得到菜单关系集合 menulist.AddRange(menudal.GetListByRoleID(db, role.RoleID.ToString())); } //获取全部菜单资源,就是根据菜单Code获取 List<AppResourceTable> menuAllList = new AppResourceTableBusiness().GetListByResCode(ResCodeEnum.MenuCode); //动态删集合对象只能倒序 for (int i = menuAllList.Count - 1; i >= 0; i--) { if (menulist.Count(x => x.MenuID == menuAllList[i].ID) == 0) { //循环的菜单不在权限菜单内的移除 menuAllList.RemoveAt(i); } } return menuAllList; }新闻热点
疑难解答