如何在Linq中编写以下内容?
select * from CompetitionDealer d
left outer join CompetitionResult r
on d.ID = r.fk_CompetitionDealer and (r.fk_CompetitionParameter is null
or r.fk_CompetitionParameter = ID1)
where fk_Competition = ID2
问题是连接上有“AND”。 如果我将它移动到结果完全不同的地方,那么我就不能那样做了。
答案 0 :(得分:1)
也许是这样的:
var ls= (
from d in db.CompetitionDealer
from r in db.CompetitionResult
.Where(a => a.fk_CompetitionDealer == d.ID
&& (a.fk_CompetitionParameter == null
|| a.fk_CompetitionParameter == ID1)).DefaultIfEmpty()
where d.fk_Competition == ID2
select d
);
其中db
是linq数据上下文
答案 1 :(得分:0)
我把它分成两个问题来解决它:
首先,我选择了以下列表:
从CompetitionResult r中选择* 其中r.fk_CompetitionParameter = ID1)
并且我在上面的列表中加入了联盟。