본문 바로가기
Programming/C#

[C#] Linq로 INNER JOIN하기

by 째스터 2022. 8. 24.
728x90

SQL에서 두 테이블을 JOIN 해서 가져오기도 하지만
C#에서 각가의 두 테이블을 Linq를 활용해서 JOIN 할 수 있다.

List<TableA> tableA = new List<TableA>();
List<TableB> tableB = new List<TableB>();

var join1 = tableA.Join(
    tableB,
    a => a.Code, b => b.Code,
    (a, b) => new { b.ColumnB, a.ColumnA });

var join2 = from a in tableA
            join b in tableB on a.Code equals b.Code
            select new { b.ColumnB, a.ColumnA };

위 두 가지 방식으로 사용할 수 있는데
join1은 Linq query syntax, join2는 Linq method chain 으로 부른다.

tableA, tableB의 element들의 Code property로 inner join을 하고
tableA의 ColumnA, tableB의 ColumnB을 select 한다.

 

public class TableA
{
    public string Code { get; set; }
    public string ColumnA { get; set; }
}

public class TableB
{
    public string Code { get; set; }
    public string ColumnB { get; set; }
}

참고로 resharper에서 query syntax에서 method chain 방식으로 변환해주기도 한다.
(나도 method chain 방식이 좋다)

728x90

'Programming > C#' 카테고리의 다른 글

[C#] Closure 문제  (0) 2022.10.21
[C#] Any() vs Count() 성능 비교  (0) 2022.10.12
C# Linq 시각화  (0) 2022.08.10
C# Class 내부 구성 요소의 순서  (0) 2022.06.22
C# string Contains()  (0) 2022.05.03

댓글