如何从一个列表中删除另一个列表中的所有项目?

Bri*_*per 0 linq vb.net lambda

我正在从远程数据库读取一组行,从本地数据库读取类似的集合,然后使用RemoveAll删除本地已存在的远程行...

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)
Run Code Online (Sandbox Code Playgroud)

但这对我来说似乎不对.当我真正需要做的是检查是否存在匹配时,我认为我不应该计算事物.我已经试过的各种用途IsDBNullIsNothing,但得到的废话.我不能使用.Except(这里建议)因为列表元素不是同一类型.

有没有更好的方法呢?

aja*_*oat 5

一种方法是:

    remote_events.RemoveAll(Function(e) local_events.Exists(Function(f) f.Identifier = e.Identifier))
Run Code Online (Sandbox Code Playgroud)