public async Task <ActionResult> GroupRoles(SelectGroupRolesViewModel selRoles) { if (ModelState.IsValid) { var groupRoles = await GroupManager.GetGroupRoles(selRoles.GroupId); var deletedRolesIds = selRoles.Roles.Where(role => groupRoles.Any(groupRole => groupRole.RoleId == role.RoleId && !role.IsSelected)) .Select(role => role.RoleId); var newRolesIds = selRoles.Roles.Where(role => !groupRoles.Any(groupRole => groupRole.RoleId == role.RoleId)).Where(role => role.IsSelected) .Select(role => role.RoleId); await GroupManager.RemoveRolesFromGroupAsync(selRoles.GroupId, deletedRolesIds); await GroupManager.AddRoleToGroup(selRoles.GroupId, newRolesIds); return(RedirectToAction("GroupList")); } return(View()); }