2013-04-27 5 views
1

알 수없는 오류로 인해 Nokia Suite를 통해 Nokia 연락처를 내 Outlook 연락처와 sync'ed 할 때마다 전화상의 각 연락처가 Outlook에 다시 추가됩니다. 이제 Outlook에서 연락처를 최대 4 부까지 사용할 수 있습니다. 일부에는 다른 중복이 채워진 여러 필드가 있습니다.같은 레코드의 여러 행을 한 행에 병합하는 알고리즘이나 패턴이 있습니까?

내가하고 싶은 일은 내 연락처를 CSV에서 데이터베이스 테이블이나 메모리 내 개체 컬렉션으로 가져온 다음 각 고유 레코드의 모든 복사본 속성을 하나의 레코드로 병합 한 다음 Outlook의 빈 연락처 폴더 C#, LINQ 또는 T-SQL 중 하나를 사용하여이 작업을 수행 할 수있는 우아한 방법이 있습니까?

또는 첫 번째 열의 모든 복사본 (행)을 반복하고 발견 된 모든 값을 비어 있거나 최신이 아닌 버전으로 복사 한 다음 두 번째 열을 반복하여 마지막?

답변

1

내 전략은 먼저 new { FirstName, LastName } 또는 EMail과 같은 키의 모든 행을 그룹화하는 것입니다 (데이터가 어떻게 생겼는지 알지 못합니다). 이제는 같은 사람에게 속한 행 그룹이 있습니다. 이제 원하는 알고리즘을 사용하여 병합해야합니다. 당신은 새로운 하나를 선택, 또는 같은 개별 속성을 병합 할 수 있습니다 중 하나 : 나는 비 결정적 DateOfBirth에 대한 최초의 null 이외의 값을 따기있어이 예에서

from r in rows 
group r by r.EMail into g 
select new { 
EMail = g.Key, 
DateOfBirth = g.Select(x => x.DateOfBirth).Where(x => x != null).First(), 
... 
} 

합니다.

관련 문제