public async Task UpdateRoleDeparmtents(int roleId, List <RoleInDepartment> models) { var old = await _roleInDepartmentService.Get(new RoleInDepartmentGetOptions { RoleId = roleId }); var toDelete = old.Select(o => o.Id).Where(o => !models.Select(du => du.Id).Contains(o)).ToList(); var toUpdate = old.Where(o => models.Select(du => du.Id).Contains(o.Id)).ToList(); var toCreate = models.Where(o => !old.Select(du => du.Id).Contains(o.Id)).ToList(); toCreate.ForEach(o => o.RoleId = roleId); await _roleInDepartmentService.Delete(toDelete); await _roleInDepartmentService.Update(toUpdate); await _roleInDepartmentService.Create(toCreate); }