private void ReconcilePreconditions(UseCase src, UseCase dest) { // delete any use cases that are no more var deletes = dest.Preconditions.Where(a => !src.Preconditions.Select(b => b.Id).Contains(a.Id)).Select(a => a.Id).ToList(); foreach (var preconditionId in deletes) { var precondition = dest.Preconditions.Where(a => a.Id == preconditionId).FirstOrDefault(); dest.Preconditions.Remove(precondition); } foreach (var precondition in src.Preconditions) { if (precondition.Id == 0) { dest.AddPrecondition(precondition); } else { var existingPrecondition = dest.Preconditions.Where(a => a.Id == precondition.Id).FirstOrDefault(); if (existingPrecondition != null) { existingPrecondition.Description = precondition.Description; } } } }