2017-05-17 1 views
-1

해당 파트와 관련된 AccountIds 및 AccountIds 목록이있는 테이블이 있습니다. 이 표에는 PartId/AccountId 쌍이 독점적 인 클럽 (IsInExclusiveClub)의 회원인지 여부를 결정하는 부울이 있습니다.존재하는 쿼리 및 존재하지 않는 테이블에서 존재하는 Linq 사용

독점 클럽에 속하지 않고 독점적 인 클럽에 속하지 않은 피지컬/파트 아이디를 찾기 위해 테이블을 쿼리하고 싶습니다. 전용 클럽에있는 경우

: 전용 클럽에서 제외 되

DECLARE       @ForeignPassedInKey int; set @ForeignPassedInKey = [Some Integer] 

SELECT      DISTINCT p.PartId 
FROM      dbo.Part p 
WHERE      IsInExclusiveClub = 1 
AND      EXISTS(SELECT * FROM dbo.Parts p2 
            WHERE p.partid = p2.partid 
            AND p2.Account IN (SELECT AccountId FROM dbo.Accounts 
                   WHERE ForeignPassedInKey = @ForeignPassedInKey) 
            AND p2.IsInExclusiveClub = 1) 

:

다음

내가이 일을 쓴 두 개의 SQL 쿼리입니다
DECLARE       @ForeignPassedInKey int; set @ForeignPassedInKey = [Some Integer] 

SELECT      DISTINCT p.PartId 
FROM      dbo.Part p 
WHERE      IsInExclusiveClub = 1 
AND      NOT EXISTS(SELECT * FROM dbo.Parts p2 
            WHERE p.partid = p2.partid 
            AND p2.Account IN (SELECT AccountId FROM dbo.Accounts 
                   WHERE ForeignPassedInKey = @ForeignPassedInKey) 
            AND p2.IsInExclusiveClub = 1) 

Linq를 사용하여 어떻게 작성해야합니까? 더 자세한 정보가 필요하면 알려주세요.

+0

귀하의 종료 존재 /하지 존재 쿼리 그들이 '처럼 외부 쿼리보기 거의 동일합니다. 어째서 당신은 존재하지만 존재하지 않는 이유는 무엇입니까? 외부 쿼리에 exit/not exists where 절의 계정 부분을 추가하는 것이 가장 좋은 이유는 무엇입니까? –

+0

그게 무슨 뜻인지 나에게 보여줄 수 있니? – crackedcornjimmy

답변

1

귀하의 질의가 이렇게 간단하게 할 수있는 다음하지 않는

SELECT     DISTINCT p.PartId 
FROM     dbo.Part p 
WHERE     IsInExclusiveClub = 1 
AND      Account IN (SELECT AccountId FROM dbo.Accounts WHERE ForeignPassedInKey = @ForeignPassedInKey) 

쿼리를 EXISTS, 당신은 "IN 계정 NOT"로 변경합니다.

이에 대한 LINQ 쿼리처럼 볼 수 있었다! 그리고

var accounts = db.Accounts 
       .Where(account => account.ForeignPassedInKey = ForeignPassedInKey) 
       .Select(account => account.AccountId); 
var parts = db.Parts 
       .Where(part => part.IsInExclusiveClub = 1 && accounts.Contains(part.AccountId)) 
       .Select(part => partId).Distinct(); 

하지 않는 accounts.Contains (part.AccountID가)

관련 문제