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
};
이 SQL을 Linq로 변환 하시겠습니까? – Scorpion
나는 이걸'_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 구문을 배우고 싶습니다. –
@ GidoDonkers는 당신의 선택 전에 누락 된'where' 절을 제외하고 L2S가 거의 옳다는 것을 보았습니다.'Pe.Naam! = null || Pr.Omschrivijving! = null || ....'(나는'LIKE' 문이 문자열을 검사하고 있다고 생각하는 것이 옳다고 생각합니까? 그렇지 않다면 http://stackoverflow.com/questions/835790/how-to-do에 관심이있을 것입니다. -sql-like-linq) –