public List <Person> AddPersons(List <Person> updatedPersons) { var isUpdated = false; List <Person> response; lock (Persons) { response = Persons.Except(updatedPersons).ToList(); foreach (var person in updatedPersons) { var p = Persons.FirstOrDefault(p1 => p1.Id == person.Id); if (p == null) { Persons.Add(person.Copy()); isUpdated = true; } else if (p.IsRemoved == false && person.IsRemoved) { p.IsRemoved = true; } } if (isUpdated) { Persons.Sort((p1, p2) => p1.Id.CompareTo(p2.Id)); PersonCount = Persons.Count; } } return(response); }