[C#] LINQ: 조인-내부조인

[원본 링크]

조인인 2개의 데이터셋을 하나로 결합하는 걸 말한다.

그 중 내부조인은 공통된 필드를 기준으로, 묶을 수 있는것만 묶어서 새로운 데이터셋을 만들고, 나머지는 버린다.

예시를 보자.
여기에 2가지의 데이터 클래스가 있다. image

image 이 둘은 완전한 별개의 클래스지만, 의미론적으로 name이라는 동일한 필드를 공유하고 있다.
서로 다른건 age와 school의 유무 뿐이다!

그럼 name을 기준으로 해서 age와 school을 하나의 클래스 객체로 묶어버릴 수도 있을 것이다. name이 일치한다는 가정 하에서 말이다.

그게 바로 내부 조인이다.

일단 각 타입에 대한 배열을 2개 생성했다. image

image 여길 보면 john, anna, tom은 양쪽에 다 존재한다.

그럼 이제 조인을 해볼까?
먼저 from-in으로 조인할 대상 A를 가져오고, join-in으로 조인 대상 B를 가져온다.
그리고 on-equals로 각 name 멤버를 비교하게 한다. 양쪽의 name이 같을 때만 같은 사람으로 인식하는 것이다. image

image 마지막으론 각 필드를 조합한 익명객체를 생성해 select로 반환만 하면 된다.

그럼 기대한 대로 일치하지 않는 요소는 버려지고, 일치하는 요소들만 묶여서 구성될 것이다. image

image

그렇다.


참조
https://docs.microsoft.com/ko-kr/dotnet/csharp/linq/perform-inner-joins