Uzgadnianie dwóch kolekcji obiektów

Mam formularz, w którym użytkownicy mogą modyfikować kolekcję obiektów za pomocą siatki danych. Po otwarciu formularza tworzę głęboką kopię oryginalnej kolekcji i po naciśnięciu przycisku Anuluj po prostu odrzucam tę kopię.

Problem polega na tym, że po naciśnięciu przycisku OK muszę uzgodnić zmiany, które mogą być:

Zmodyfikowane właściwości istniejących obiektówNowe obiekty dodane do dowolnego miejsca w kolekcji.Usunięto istniejące obiekty.Istniejące obiekty zostały ponownie uporządkowane.

Ponieważ muszę zachować oryginalne referencje, nie mogę po prostu wyczyścić kolekcji i dodać zmodyfikowanych elementów.

Czy znasz prosty algorytm, który zsynchronizuje dwie takie kolekcje?

Używam C # 3.5, więc LINQ jest dostępny.

questionAnswers(3)

yourAnswerToTheQuestion