>백엔드 개발 >C++ >확장 방법을 사용하여 LINQ에서 왼쪽 외부 조인을 수행하는 방법은 무엇입니까?

확장 방법을 사용하여 LINQ에서 왼쪽 외부 조인을 수행하는 방법은 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2025-01-24 10:01:09254검색

How to Perform Left Outer Joins in LINQ Using Extension Methods?

LINQ 확장 방법을 사용하여 왼쪽 외부 조인 수행

왼쪽 외부 조인은 왼쪽 테이블("상위" 테이블이라고 함)의 모든 행과 오른쪽 테이블("하위" 테이블이라고 함)에서 일치하는 행만 반환하는 조인 연산입니다. 하위 테이블에서 일치하는 행을 찾을 수 없는 경우 상위 테이블의 해당 행에 대한 반환 값은 null입니다.

LINQ에서 왼쪽 외부 조인을 수행하는 한 가지 방법은 Join 메서드를 사용하는 것입니다. 이 메서드는 상위 및 하위 테이블의 특성을 포함하는 익명 형식 시퀀스를 만듭니다. 그러나 동일한 결과를 얻는 더 편리한 방법은 GroupJoinSelectMany 확장 메서드를 사용하는 것입니다.

확장 메서드를 사용한 왼쪽 외부 조인 구문은 다음과 같습니다.

<code class="language-csharp">var query = parentTable.GroupJoin(
    childTable, 
    parentKeySelector,
    childKeySelector,
    (parent, child) => new { Parent = parent, Child = child.DefaultIfEmpty() })
    .SelectMany(
        x => x.Child,
        (x, y) => new { Parent = x.Parent, Child = y });</code>

이 구문에서:

  • parentTablechildTable은 조인할 테이블입니다.
  • parentKeySelectorchildKeySelector은 두 테이블을 조인하는 데 사용되는 키를 지정하는 람다 식입니다.
  • GroupJoin 메서드의 익명 유형은 상위 행과 하위 행을 결합합니다.
  • DefaultIfEmpty() 메서드는 일치하는 상위 행이 없는 하위 행에 대해 null이 반환되도록 합니다.
  • SelectMany 메서드는 익명 유형의 시퀀스를 단일 시퀀스로 평면화합니다. 각 요소는 상위 테이블의 행과 해당 하위 행(또는 일치하는 하위 행이 없는 경우 null)을 나타냅니다.

SQL에서 다음 왼쪽 외부 조인 쿼리를 고려해 보세요.

<code class="language-sql">SELECT f.*, b.*
FROM Foo f
LEFT JOIN Bar b ON f.Foo_Id = b.Foo_Id;</code>

이 쿼리는 확장 메소드를 사용하여 다음과 같이 표현할 수 있습니다.

<code class="language-csharp">var query = Foo.GroupJoin(
    Bar, 
    f => f.Foo_Id,
    b => b.Foo_Id,
    (f, b) => new { Foo = f, Bar = b.DefaultIfEmpty() })
    .SelectMany(
        x => x.Bar,
        (f, b) => new { Foo = f.Foo, Bar = b });</code>

이 쿼리는 일련의 익명 유형을 반환하며, 각 유형에는 Foo 및 Bar 테이블의 속성이 포함되어 있습니다. Foo 테이블의 행에 Bar 테이블의 일치하는 행이 없으면 해당 Bar 속성은 null이 됩니다.

위 내용은 확장 방법을 사용하여 LINQ에서 왼쪽 외부 조인을 수행하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.