private void RefreshSessionObjects() { var actualObjects = FavouritesCollectionUI.FindRootObjects(Activator, Collection.DatabaseObjects.Contains) .Union(Collection.DatabaseObjects.OfType <Pipeline>()).ToList(); //no change in root favouratism if (actualObjects.SequenceEqual(olvTree.Objects.OfType <IMapsDirectlyToDatabaseTable>())) { return; } //remove old objects foreach (var old in Collection.DatabaseObjects.Except(actualObjects)) { olvTree.RemoveObject(old); } //add new objects foreach (var newObject in actualObjects.Except(olvTree.Objects.OfType <IMapsDirectlyToDatabaseTable>())) { olvTree.AddObject(newObject); } //update to the new list Collection.DatabaseObjects = actualObjects; olvTree.RebuildAll(true); }