2013-06-10 2 views
0

내가에서 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)을 사용할 수 없습니다.

더 좋은 방법이 있나요?

답변

4

한 가지 방법은 이것이다 :

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

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 

나는 이것이 올바른 방향으로 나아갈 수 있기를 바랍니다.

+0

이 가장 좋습니다; 처음부터 그들을 포함시키지 말라. –

+0

죄송합니다. 작동하지 않습니다. 테이블은 두 개의 다른 데이터베이스에 있습니다. –

+0

나는 왜 tht가 어떤 차이를 만들지 이해하지 못한다. ... 그것이 일하는 것을 멈추지 않아야했다. ... –

관련 문제