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
};
是否要將此SQL轉換爲Linq? – Scorpion
我已經試過這'來自PR的_db.Projectens 加入鉑在Pr.ProjType_ _db.ProjectTypens等於Pt.TypeID 在_db.Personeels加入與PE((Pr.SeniorId_ == Pe.PerId_)||鐠.SeniorId_ == Pe.PerId_)into P select new {...};' 但是當然可以做一個存儲過程,但我想學習LINQ to SQL的語法.. –
@ GiedoDonkers在我看來像你的L2S幾乎是正確的,除了你選擇之前缺少'where'子句 - 就像'Where Pe.Naam!= null || Pr.Omschrivijving!= null || ....'(我認爲我認爲你的'LIKE'語句只是檢查字符串是否正確?如果不是,你可能會對http://stackoverflow.com/questions/835790/how-to-do感興趣-sql-like-in-linq) –