그냥 다른 용액 :
var list1 = new List<string> { "Abc", "Xyz", "BlahBlah" };
var list2 = new List<string> { "Abc", "Xyz", "YadiYada" };
var r1 = list1
.GroupJoin(
list2,
l1 => l1,
l2 => l2,
(l1, l2) => new { l1 = l1, l2 = l2.FirstOrDefault() });
var r2 = list2
.GroupJoin(
list1,
l2 => l2,
l1 => l1,
(l2, l1) => new { l1 = l1.FirstOrDefault(), l2 = l2 });
var result = r1.Union(r2);
01,233,407 :
var list1 = new List<string> { "Abc", "Xyz", "BlahBlah" };
var list2 = new List<string> { "Abc", "Xyz", "YadiYada" };
var r1 = from l1 in list1
join l2 in list2 on l1 equals l2 into t
from l2 in t.DefaultIfEmpty()
select new { l1, l2 };
var r2 = from l2 in list2
join l1 in list1 on l2 equals l1 into t
from l1 in t.DefaultIfEmpty()
select new { l1, l2 };
var result = r1.Union(r2);
Left Outer Join
이것은 방법 구문을 이용하여 대안 이 일반적으로 간단하고 읽을 수 있기 때문에 일반적으로
, 우리는 쿼리 구문을 권장; 그러나 메서드 구문과 쿼리 구문 사이에 의미 적 차이가 없습니다. 또한 과 같이 지정된 조건과 일치하는 요소 수를 검색하는 쿼리 또는 소스 시퀀스에서 최대 값을 갖는 요소를 검색하는 쿼리는 메서드 호출로만 표현할 수 있습니다.
필요한 경우 도움을 제공 할 수 있도록 지금까지 시도한 내용을 [mcve]로 입력하십시오. – Nkosi
집합 이론은 어떻습니까? 'union'은'intersect'에 의해'.except()'를 수행합니까? 'intersect'는 당신에게 일치를 줄 것이지만, 그런 접근은 당신에게 모든 불일치를 줄 것입니다. - ((목록 A) U (목록 B)) - ((목록 A) ∩ (목록 B)) –
@BagusTesa, 내가 어디로가는 지 알지만, 다른 목록에 포함되어 있지 않으며 이는 답변의 일부일뿐입니다. 또한 List1에만있는 항목과 List2에만있는 항목이 필요합니다. 이것은 옳은 길에서 나에게 도움이되게했다! – Jiveman