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)

しかし、これは私には正しくないようです。本当に必要なのは一致が存在するかどうかを確認することだけである場合、物事を数えるべきではないと思います。andのさまざまな使用法を試しましたが、意味がIsDBNullありIsNothingません。リスト要素が同じタイプではないため、 (ここで.Except提案されているように)使用できません。

これを行うより良い方法はありますか?

4

2 に答える 2

6

1つの方法はこれです:

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

私はビジュアルスタジオなしでこれをやろうとしているので、これがうまくいくかどうかはわかりませんが、あなたがやろうとしているのが以下を比較することであれば、これらの線に沿って何かできると思います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 に答える