Apologies for the confusion of duplicate closures. This question and the highlighted answer will allow you to support an extension method to remove from observable collections:
RemoveAll for ObservableCollections?
It will not support the syntax from x in y , but it will allow you to:
var c = new ObservableCollection<SelectableItem>(); c.Remove(x => x.IsSelected);
However, with checking x.PID == p.PID and a note about your other question ... If you really want to delete items that are in both lists, this might not be the best option.
Except extension method will enumerate items that exclude items that are listed in the argument, in your case a second list. This method does not mutate the existing enumeration, like most actions, it returns a new one, so you will need to set it to a new ObservableCollection .
source share