我熟悉SQL的工作方式,但使用LINQ to SQL让我很头疼。我有以下查询但我无法将其更改为LINQ to 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 :(得分: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
试着让我知道,如果这样的话。