Unity3d C# toolba 사용해보기

C# LINQ InnerJoin OuterJoin 알아봅시다.

안녕하세요 메르세데스입니다. 이번시간에는 LINQ의 Join에 대해 알아보도록 하겠습니다.

Join도 역시 마찬가지로 sql문에서 정말 다양하게 사용되는 기본기능중에 하나죠..


쉽게 이야기하자면..교집합과 합집합을 생각하시면되겠습니다.


내부조인(Inner Join)은 교집합.. 외부조인(Outer Join)은 합집합이 되겠습니다.


두  데이터 원본사이에 일치되는 데이터를 연결하여 원하는 값을 얻는 방법이 되겠습니다.





Table -a                          Table-b

[name] [height]           [name] [product]
 aaaa     180                aaaa     "apple" 
 bbbb     160                bbbb     "orange" 
 cccc      170                bbbb    "grape"
 dddd      165               dddd     "mango"

A, B테이들이 있는데  name이라는 field에 중복되는 항목들중 겹치는 것과 겹치지 않는것을 생각하시면 되겠습니다. 


문법이 쿼리와는 너무 다르니 좀 복잡한것 같습니다. 벌써 머리가 굳어서 새로운게 잘 안들어가네요.. 비울자리도 없고..ㅜㅜ



 join 을 하는 문법을 알아보겠습니다.



InnerJoin

from a in A
join B in B on a.xx  equals b.xx   <-- equals 키워드를 이용해서 연결에주목!



Outer Join

from a in A
join B in B on a.xx equals b.xx into C    <-- into 문이 추가되었습니다.
from B in C.xxxx  

특이한 점은 ==이 아니라 equals라는 키워들 이용해서 두 데이터간의 같음을 비교했다는거죠..

무언가 이렇게 할 수 밖에 없었던 이유가 있었을까요?

외부조인에서 into 문이 뒤에 따라 붙은것은.. 조인결과에대한 공백부분을 처리하는 방법때문인듯 합니다. 그리고 구별도 해야하니까요..

예제를 살펴보겠습니다.


C# LINQ join

프로퍼티객체 arrProfile, arrProduct에서 공통이되는 Name, Star를 각각 내부조인과 외부조인을 걸어 결과를 출력했습니다.

외부조인에서는... 좀 복잡하네요 저도 잘 이해가 안되는데요.. 공백문자가 찍히는것을..대체문자로 입력하는거는 이렇게 하면된다! 라는것을 잘 보여주는 예제인것 같습니다.


저는 솔직히 이정도까지의 LINQ를 사용해야 할 때가 올지는 잘 모르겠습니다. 그냥 데이터베이스에 sql문을 던져서 가져오는것이 좀 더 편할것 같습니다.ㅜㅜ



책뒤에 나와있는 연습문제를 하나 풀어보겠습니다.

결과는 있지만.. 중간에 과정이 없죠? 방법은 수백가지가 될테니까요.. 미숙하지만..

한번 작성해봤습니다.


문제가 무엇이냐면..

Cost 는 50이상.. MaxSpeed는 150이상인 레코드만 조회하는 LINQ를 만들라는건데요


var selected = /* 이곳을 채워 넣으라는겁니다.  */


C# LINQ example


람다식을 최근에 배워서 한번 이렇게 적용을 해봤습니다.  




이상으로 C#의 LINQ JOIN하는 방법까지 알아봤습니다.












댓글