2011-11-29 4 views
4

부모 엔티티에 속한 항목의 목록을 나타내는 두 개의 데이터베이스 테이블이 있습니다.두 컬렉션을 비교하고 하나에서 추가/제거하여 일치하도록

나는 정기적으로 테이블을 일치하도록 테이블 B를 업데이트해야

LINQ, 내가 테이블 A의 ID의 컬렉션을 얻을 사용하여 지금 추가 할 테이블 B에서 행을 제거해야

A와 일치합니다.

linq 및 EF 4.1을 사용하여 가장 효율적으로 수행 할 수있는 방법은 무엇입니까?

A 루프를 통해 루프를 돌릴 수 있으며,이 루프 내에서 바깥 쪽 루프의 현재 항목과 일치하는 레코드를 B 루프로 검사하여 일치하는 항목이없는 경우 새 항목을 추가합니다. 그런 다음 B를 두 번 반복하여 A에없는 항목을 제거해야합니다. 이는 비효율적 인 것처럼 보입니다. 내가 놓친 게 있니?

답변

4
var toRemove = tableB.Except(tableA); 
var toAdd = tableA.Except(tableB); 

tableAtableB는 ID의 목록입니다.

그런 다음 foreach() 두 결과 목록을 구하고 필요한 작업을 수행하는 것이 가장 쉽습니다.

+0

그래서 내가이 권리를 가지고 있는지 확인하십시오. 나는 B를 통해 반복하고 toRemove 목록의 모든 항목을 제거하고 toAdd 목록의 모든 항목을 추가합니까? – stephen776

+0

네, 그럴 겁니다. 기록을 변경하지 않은 것이 행운입니다. –

+0

감사합니다! 단순히 활성/비활성 플래그를 추가하고 설정해야합니다. – stephen776

관련 문제