데이터 액세스에 지정된 조건으로 여러 테이블을 조인하는 상황에서 LINQ to SQL은 효과적인 수단을 제공합니다. 그러한 작업을 수행합니다. 이 문서에서는 데이터를 검색하기 위해 여러 조인 조건이 있는 왼쪽 외부 조인이 필요한 특정 시나리오를 자세히 설명합니다.
초기 쿼리 및 과제
다음 SQL 쿼리를 고려하세요.
SELECT f.value FROM period AS p LEFT OUTER JOIN facts AS f ON p.id = f.periodid AND f.otherid = 17 WHERE p.companyid = 100
이 작업은 이 쿼리를 LINQ 식으로 변환하는 것입니다. LINQ에는 왼쪽 외부 조인을 수행하는 표준 방법이 있지만(예: DefaultIfEmpty() 사용) 추가 조인 조건 f.otherid = 17을 통합하는 것은 어려운 일입니다.
해결책: 조인 조건 배치 Before DefaultIfEmpty()
이 문제를 해결하는 핵심은 조인 조건을 도입하는 것입니다. DefaultIfEmpty()를 호출하기 전에. 이는 확장 메소드 구문 또는 하위 쿼리를 사용하여 달성할 수 있습니다.
// Using extension method syntax from p in context.Periods join f in context.Facts on p.id equals f.periodid into fg from fgi in fg.Where(f => f.otherid == 17).DefaultIfEmpty() where p.companyid == 100 select f.value; // Using a subquery from p in context.Periods join f in context.Facts on p.id equals f.periodid into fg from fgi in (from f in fg where f.otherid == 17 select f).DefaultIfEmpty() where p.companyid == 100 select f.value;
조인 조건 배치 설명
AND f.otherid = 17 조건은 다음의 일부입니다. 이 조건을 충족하는 사실 테이블의 행만 기간 테이블의 해당 행과 조인되도록 보장하기 때문입니다. 조인 후 WHERE 절에 이 조건을 배치하면 사실 테이블에 일치하는 행이 없는 기간 테이블의 모든 행이 제외됩니다. 이는 해당 행이 조건을 충족하더라도 마찬가지입니다. 조인에서 조건을 지정하여 원하는 동작을 유지합니다.
위 내용은 LINQ to SQL에서 여러 조건을 사용하여 왼쪽 외부 조인을 구현하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!