Instead of creating a new collection, you could just remove the items you want from the original. This is preferable if, for example, you're working in WPF and have bound the observable collection to a control.
var itemsToRemove = ItemsObservableCollection.Where(
i => !selectedItemsObservableCollection.Any(y => y.name == i.Name)).ToList();
foreach (var item in itemsToRemove)
ItemsObservableCollection.Remove(item);
(Have to use ToList()
to avoid a "collection was modified" error.)