Como remover de uma lista todos os itens em outro?

Eu estou lendo um conjunto de linhas de um banco de dados remoto e um conjunto semelhante de um banco de dados local e, em seguida, usando RemoveAll para se livrar das linhas remotas que já estão presentes localmente ...

remote_events = (From a In remote.Events
                          Where ...etc...).ToList
local_events = (From a In local.Events
                            Where ...etc...).ToList
remote_events.RemoveAll(Function (ByVal event_row As Remote_Event)
    (From a In local_events Where a.Identifier = event_row.Identifier).Count > 0)

mas isso não parece certo para mim. Eu não acho que eu deveria estar contando as coisas quando tudo que eu realmente preciso fazer é verificar se existe uma correspondência. Eu tentei vários usos deIsDBNull eIsNothing mas fique sem sentido. Não posso usar.Except (como sugeridoAqui) porque os elementos da lista não são do mesmo tipo.

Existe um jeito melhor de fazer isso?

questionAnswers(2)

yourAnswerToTheQuestion