LINQ to SQL을 사용하여 IN 하위 쿼리 처리
LINQ to SQL에서는 IN 하위 쿼리를 처리해야 할 수도 있습니다. SQL의 일반적인 작업입니다. 시나리오를 생각해 보겠습니다.
질문:
다음 SQL 쿼리를 LINQ to SQL로 어떻게 변환할 수 있나요?
SELECT f.* FROM Foo f WHERE f.FooId IN ( SELECT fb.FooId FROM FooBar fb WHERE fb.BarId = 1000 )
답변:
LINQ에서 이러한 쿼리를 구현하려면 SQL에는
1이라는 두 가지 개념을 사용해야 합니다. 키 모음으로서의 하위 쿼리:
IN 절의 조건을 충족하는 키 모음으로 하위 쿼리를 정의하는 것부터 시작합니다.
var fooBarIds = from fb in context.FooBar where fb.BarId == 1000 select fb.FooId;
2. Contains 메서드를 사용한 쿼리:
다음으로, 키 컬렉션에 Contains 메서드를 사용하여 지정된 FooId가 있는지 확인할 수 있습니다.
var result = from f in context.Foo where fooBarIds.Contains(f.FooId) select f;
이 쿼리는 모든 키를 반환합니다. 검색된 FooId 컬렉션에 FooId가 존재하는 Foo 테이블의 행 하위 쿼리.
확장 사용 사례:
EXISTS:
// EXISTS var q = from t1 in table1 let t2s = from t2 in table2 where <Conditions for table2> select t2.KeyField where t2s.Any(t1.KeyField) select t1;
위 내용은 SQL의 IN 하위 쿼리를 LINQ to SQL로 변환하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!