LINQ 확장 방법을 사용하여 왼쪽 외부 조인 수행
왼쪽 외부 조인은 왼쪽 테이블("상위" 테이블이라고 함)의 모든 행과 오른쪽 테이블("하위" 테이블이라고 함)에서 일치하는 행만 반환하는 조인 연산입니다. 하위 테이블에서 일치하는 행을 찾을 수 없는 경우 상위 테이블의 해당 행에 대한 반환 값은 null입니다.
LINQ에서 왼쪽 외부 조인을 수행하는 한 가지 방법은 Join
메서드를 사용하는 것입니다. 이 메서드는 상위 및 하위 테이블의 특성을 포함하는 익명 형식 시퀀스를 만듭니다. 그러나 동일한 결과를 얻는 더 편리한 방법은 GroupJoin
및 SelectMany
확장 메서드를 사용하는 것입니다.
확장 메서드를 사용한 왼쪽 외부 조인 구문은 다음과 같습니다.
<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>
이 구문에서:
parentTable
과 childTable
은 조인할 테이블입니다. parentKeySelector
및 childKeySelector
은 두 테이블을 조인하는 데 사용되는 키를 지정하는 람다 식입니다. 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!