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;
}