2011-08-03 2 views
10
사이의 차이를 찾을 수있는 더 좋은 방법

가능한 중복 :
Getting the “diff” between two arrays in C#?두 배열

두 배열의 차이를 얻을 수있는 더 나은 방법이 있나요?

var a = new int[] { 1, 2, 3 }; 
var b = new int[] { 2, 3, 4 }; 

foreach (var d in a.Except(b).Union(b.Except(a))) 
    Console.WriteLine(d); // 1 4 
+0

먼저 두 배열 사이의 "차이"를 정의해야합니다. –

+0

SO에 대한 동일한 질문이 많이 있습니다 – sll

+0

어떤 의미에서 더 나은가요? –

답변

8

을 시도합니다. 여러분이 해낸 방법은 완벽합니다. 비록 그 비트를 독자적인 방법으로 추출하는 것이 좋습니다.

그러나이를 수행하는 더 효율적인 방법은 HashSet<T>.SymmetricExceptWith 방법입니다.

var result = new HashSet<int>(a); 
result.SymmetricExceptWith(b); 

foreach (var d in result) 
    Console.WriteLine(d); // 1 4 
+1

이것은 내 접근 방식보다 더 좋은 방법 인 것 같습니다. :) – MrCoocoo

4

는, 당신은 symmetric-difference 찾고있는 객체에 LINQ는 (.NET 4.0로) 아직없는 연산자를

a.Union(b).Except(a.Intersect(b)) 
+1

나에게이 방법은 원본 질문의 방법보다 더 명확하게 보입니다.하지만 어느 쪽이든 괜찮습니다. –

0

나는 당신이 가진 것이 아마도 간단한 코드의 관점에서 이것을하는 가장 좋은 방법이라고 생각합니다.

최종 목표는 무엇인지에 따라 읽기 쉽도록하는 방법이있을 수 있습니다.