2012-01-27 3 views
0

를 사용하여 만들어 질?단순화 쿼리는 다음 스키마를 갖는 LINQ

SELECT DISTINCT(c.id_credito), c.expediente, c.status 
FROM creditos AS C 
JOIN acreditados AS A ON A.id_credito = C.id_credito 
WHERE A.id_acreditado NOT IN 
    (SELECT d.id_acreditado 
    FROM disposiciones_acreditados AS D) 

제안 사항?

답변

0

this 기사에 따르면 실행이 빠르다는 NOT EXISTS 조건을 사용하여 해결책을 찾았습니다.

그래서 내가 찾던 쿼리는 다음과 같습니다 LINQ와 동등한와

SELECT DISTINCT(c.id_credito), c.expediente, c.status 
FROM creditos AS C 
JOIN acreditados AS A ON A.id_credito = C.id_credito 
WHERE NOT EXISTS 
    (SELECT NULL AS EMPTY 
    FROM disposiciones_acreditados AS D 
    WHERE D.id_acreditado = A.id_acreditado) 

:

(from c in context.creditos 
          join a in context.acreditados on c.IDCredito equals a.IDCredito 
          where !(from d in context.disposiciones_acreditados 
            select d.IDAcreditado).Contains(a.IDAcreditado) 
          select c).Distinct();