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

Vb.net 如何从一个列表中删除另一个列表中的所有项目?,vb.net,linq,lambda,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_event

我正在从远程数据库读取一组行,从本地数据库读取一组类似的行,然后使用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)
但我觉得这不对。当我真正需要做的只是检查是否存在匹配时,我不认为我应该计算事情。我试过
IsDBNull
IsNothing
的各种用法,但都是胡说八道。我不能使用
。除了
(如建议的那样),因为列表元素的类型不同


有更好的方法吗?

我尝试在没有visual studio的情况下执行此操作,因此我不确定这是否可行,但如果您尝试比较
标识符
,我想您可以按照这些方法执行:

    Remote_Events = (From r_evt In Remote_Events
                    Where Not ((From l_evt In Local_Events Select l_evt.Identifier).Contains(r_evt.Identifier))
                    Select r_evt).ToList

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

我正在尝试在没有visual studio的情况下实现这一点,因此我不确定这是否可行,但如果您尝试比较
标识符
,我想您可以按照这些思路做一些事情:

    Remote_Events = (From r_evt In Remote_Events
                    Where Not ((From l_evt In Local_Events Select l_evt.Identifier).Contains(r_evt.Identifier))
                    Select r_evt).ToList
我希望这能帮助你,至少能让你朝着正确的方向前进。

一个方法是:

    remote_events.RemoveAll(Function(e) local_events.Exists(Function(f) f.Identifier = e.Identifier))
一种方法是:

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

这是最好的;首先不包括它们。抱歉,无法使其正常工作;这些表在两个不同的数据库中。我不明白为什么这会有什么不同。。。。这不应该阻止这一切…约翰,很抱歉把你从你的上升中抽了出来。尝试这样做会导致一个异常,我忘记了它的名称,但其要点是,我无法以这种方式在不同的数据库上嵌套查询。我没有那么努力地追求这件事;也许我应该坚持。别担心,布莱恩。幸运的是,我从其他问题中得到了足够的提升:)-我只是想让你知道,在这一点上,你正在处理的应该是两个列表,因此根据你在问题中的表达方式,不应该有DB参与。。。不管怎样,只要你能让它工作,这是最重要的部分;首先不包括它们。抱歉,无法使其正常工作;这些表在两个不同的数据库中。我不明白为什么这会有什么不同。。。。这不应该阻止这一切…约翰,很抱歉把你从你的上升中抽了出来。尝试这样做会导致一个异常,我忘记了它的名称,但其要点是,我无法以这种方式在不同的数据库上嵌套查询。我没有那么努力地追求这件事;也许我应该坚持。别担心,布莱恩。幸运的是,我从其他问题中得到了足够的提升:)-我只是想让你知道,在这一点上,你正在处理的应该是两个列表,因此根据你在问题中的表达方式,不应该有DB参与。。。不管怎样,只要你让它工作起来,这是最重要的部分。