2012-06-27 3 views
3

SQL이 작동하는 방식에 익숙하지만 LINQ to SQL을 사용하면 두통이 생깁니다. 다음 쿼리를했지만 LINQ to SQL로 변경할 수 없습니다. 누군가이 쿼리를 도와 주거나이 작업을 수행하는 방법을 설명해 줄 수 있습니까?LINQ to SQL에서이 SQL을 만드는 방법은 무엇입니까?

SELECT 
     DISTINCT Pr.Pcode_, 
     Pr.Omschrijving, 
     Pt.TypeOmschr 
    FROM 
     Projecten AS Pr 
    INNER JOIN 
     ProjectTypen AS Pt 
     ON Pr.ProjType_ = Pt.TypeID 
     AND 
     Pr.Status NOT IN ('Afgerond', 'Afgewezen') 
     LEFT OUTER JOIN 
     Personeel AS Pe 
     ON Pr.SeniorId_ = Pe.PerId_ 
     OR 
     Pr.CorId_ = Pe.PerId_ 
     WHERE 
     (Pe.Naam LIKE '%%') 
     OR 
     (Pr.Omschrijving LIKE '%%') 
     OR 
     (Pr.Pcode_ LIKE '%%') 
     OR 
     (Pt.TypeOmschr LIKE '%%') 
     ORDER BY 
     Pr.Pcode_ 

편집 :
나는 다음과 같은 L2S을 가지고 있지만 그것이 작동하지 않습니다. 다음과 같은 오류가 나타납니다 : 'Pe'이름이 'equals'의 왼쪽에 없습니다. 문제는 왼쪽 가입이라고 생각하지만 솔루션은 무엇입니까?

from Pr in _db.Projectens 
    join Pt in _db.ProjectTypens on Pr.ProjType_ equals Pt.TypeID 
    join Pe in _db.Personeels on ((Pr.SeniorId_ == Pe.PerId_) || (Pr.SeniorId_ == Pe.PerId_)) into P 
    where Pr.Pcode_.Contains(search) || Pr.Omschrijving.Contains(search) || Pt.TypeOmschr.Contains(search) || Pe.Naam.Contains(search) 
    select new SearchProjectViewModel { 
     ProjectCode = Pr.Pcode_, 
     ProjectName = Pr.Omschrijving, 
     ProjectType = Pt.TypeOmschr 
    }; 
+0

이 SQL을 Linq로 변환 하시겠습니까? – Scorpion

+0

나는 이걸'_db.Projectens에서 Pr로부터 시도했다. Pr.ProjType_ equals Pt.TypeID와 동일한 _db.ProjectTypens의 Pt에 합치다 ​​ _db.Personeels의 Pe에 참여한다 ((Pr.SeniorId_ == Pe.PerId_) || Pr .SeniorId_ == Pe.PerId_) into P select new {...};' 물론 저장 프로 시저를 만들 수도 있지만 LINQ to SQL 구문을 배우고 싶습니다. –

+0

@ GidoDonkers는 당신의 선택 전에 누락 된'where' 절을 제외하고 L2S가 거의 옳다는 것을 보았습니다.'Pe.Naam! = null || Pr.Omschrivijving! = null || ....'(나는'LIKE' 문이 문자열을 검사하고 있다고 생각하는 것이 옳다고 생각합니까? 그렇지 않다면 http://stackoverflow.com/questions/835790/how-to-do에 관심이있을 것입니다. -sql-like-linq) –

답변

0

나는

join Pe in _db.Personeels on ((Pr.SeniorId_ == Pe.PerId_) || (Pr.SeniorId_ == Pe.PerId_)) into P 

join Pe in _db.Personeels on ((Pr.SeniorId_ equals Pe.PerId_) || (Pr.SeniorId_ equals Pe.PerId_)) into P 

시도하고이 작동하는지 알려한다고 생각합니다.

+0

나는 그것을 시도했지만 불행히도 그것이 작동하지 않는다. 노력해 줘서 고마워. –

관련 문제