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

时间:2013-06-10 12:57:33

标签: vb.net linq 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)

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

有更好的方法吗?

2 个答案:

答案 0 :(得分:5)

一种方法是:

    remote_events.RemoveAll(Function(e) local_events.Exists(Function(f) f.Identifier = e.Identifier))

答案 1 :(得分:2)

我试图在没有视觉工作室的情况下这样做,所以我不确定这是否会起作用,但我想你可以沿着这些方向做一些事情,如果你要做的就是比较{{ 1}}:

Identifier

我希望这会有所帮助,至少会让你朝着正确的方向前进。