>백엔드 개발 >C++ >확장 방법은 LINQ에서 왼쪽 외부 결합을 어떻게 단순화 할 수 있습니까?

확장 방법은 LINQ에서 왼쪽 외부 결합을 어떻게 단순화 할 수 있습니까?

Barbara Streisand
Barbara Streisand원래의
2025-01-24 10:12:10691검색

How Can Extension Methods Simplify Left Outer Joins in LINQ?

LINQ의 왼쪽 외부 조인 확장 방법 사용

LINQ에서 외부 조인을 수행하려면 JoinDefaultIfEmpty 방법을 조합하여 수행할 수 있습니다. 그러나 코드 가독성과 단순성을 향상시키기 위해 확장 메서드는 이러한 작업을 표현하는 보다 편리한 방법을 제공합니다.

확장 방법을 사용하여 왼쪽 외부 조인을 수행하려면 다음 구문을 고려하세요.

<code class="language-csharp">Foo.GroupJoin(Bar, f => f.Foo_Id, b => b.Foo_Id, (f,b) => ...)
    .Select(...)</code>

이 구문에서:

  • GroupJoin 키 선택기에 따라 첫 번째 시퀀스(Foo)의 요소를 그룹화하고 호환 가능한 키 선택기를 사용하여 두 번째 시퀀스(Bar)와 결합합니다.
  • 결과는 열거 가능한 튜플 컬렉션입니다. 여기서 각 튜플은 첫 번째 시퀀스의 요소와 두 번째 시퀀스의 그룹화된 열거 가능한 요소 컬렉션을 포함합니다.
  • SelectMany은 그룹화된 요소를 평면화하고 첫 번째 시퀀스와 결합하는 데 사용됩니다.
  • DefaultIfEmpty은 두 번째 시퀀스에 일치하는 요소가 없는 경우 기본값이 반환되도록 하는 데 사용됩니다.

왼쪽 외부 조인을 완료하기 위한 남은 단계는 결합된 요소에 대해 선택을 수행하는 것입니다. 이 경우 Select 메서드를 사용하여 각 튜플의 원하는 속성을 투영할 수 있습니다.

예를 들어 Foo_Id 열을 기반으로 Foo와 Bar 사이의 왼쪽 외부 조인을 표현하려면 다음 코드를 사용할 수 있습니다.

<code class="language-csharp">var qry = Foo.GroupJoin(
          Bar, 
          foo => foo.Foo_Id, 
          bar => bar.Foo_Id,
          (x,y) => new { Foo = x, Bars = y })
       .SelectMany(
           x => x.Bars.DefaultIfEmpty(),
           (x,y) => new { Foo=x.Foo, Bar=y});</code>

이 코드는 익명 유형의 열거 가능한 컬렉션을 생성합니다. 여기서 각 유형은 Foo 테이블의 Foo 속성과 Bar 테이블의 Bar 속성을 포함합니다(또는 일치하는 막대가 없는 경우 null).

위 내용은 확장 방법은 LINQ에서 왼쪽 외부 결합을 어떻게 단순화 할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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