1

我正在从远程数据库读取一组行,从本地数据库读取一组类似的行,然后使用 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胡说八道。我不能使用.Except(如此处所建议),因为列表元素的类型不同。

有没有更好的方法来做到这一点?

4

2 回答 2

6

一种方法是:

    remote_events.RemoveAll(Function(e) local_events.Exists(Function(f) f.Identifier = e.Identifier))
于 2013-06-10T14:00:50.520 回答
2

我正在尝试在没有 Visual Studio 的情况下执行此操作,所以我不确定这是否可行,但我想如果您尝试做的是比较以下内容,您可以按照这些方式做一些事情Identifier

    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

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

于 2013-06-10T13:14:16.860 回答