public void UpdateRolePermissions(string[] selectedPermissions, Role roleToUpdate) { if (selectedPermissions == null) { roleToUpdate.PermissionAssignments = new List <PermissionAssignment>(); return; } var selectedPermissionsHS = new HashSet <string>(selectedPermissions); var rolePermissions = new HashSet <int> (roleToUpdate.PermissionAssignments.Select(c => c.PermissionID)); foreach (var permissions in _context.Permissions) { if (selectedPermissionsHS.Contains(permissions.PermissionID.ToString())) { if (!rolePermissions.Contains(permissions.PermissionID)) { roleToUpdate.PermissionAssignments.Add(new PermissionAssignment { RoleID = roleToUpdate.ID, PermissionID = permissions.PermissionID }); } } else { if (rolePermissions.Contains(permissions.PermissionID)) { PermissionAssignment courseToRemove = roleToUpdate.PermissionAssignments.SingleOrDefault(i => i.PermissionID == permissions.PermissionID); _context.Remove(courseToRemove); } } } }