두 배열의 차이를 얻을 수있는 더 나은 방법이 있나요?
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
두 배열의 차이를 얻을 수있는 더 나은 방법이 있나요?
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
을 시도합니다. 여러분이 해낸 방법은 완벽합니다. 비록 그 비트를 독자적인 방법으로 추출하는 것이 좋습니다.
그러나이를 수행하는 더 효율적인 방법은 HashSet<T>.SymmetricExceptWith
방법입니다.
var result = new HashSet<int>(a);
result.SymmetricExceptWith(b);
foreach (var d in result)
Console.WriteLine(d); // 1 4
이것은 내 접근 방식보다 더 좋은 방법 인 것 같습니다. :) – MrCoocoo
는, 당신은 symmetric-difference 찾고있는 객체에 LINQ는 (.NET 4.0로) 아직없는 연산자를
a.Union(b).Except(a.Intersect(b))
나에게이 방법은 원본 질문의 방법보다 더 명확하게 보입니다.하지만 어느 쪽이든 괜찮습니다. –
나는 당신이 가진 것이 아마도 간단한 코드의 관점에서 이것을하는 가장 좋은 방법이라고 생각합니다.
최종 목표는 무엇인지에 따라 읽기 쉽도록하는 방법이있을 수 있습니다.
먼저 두 배열 사이의 "차이"를 정의해야합니다. –
SO에 대한 동일한 질문이 많이 있습니다 – sll
어떤 의미에서 더 나은가요? –