我有以下SQL,这我想转换为LINQ:LINQ到SQL - 左外连接有多个连接条件
SELECT f.value
FROM period as p
LEFT OUTER JOIN facts AS f ON p.id = f.periodid AND f.otherid = 17
WHERE p.companyid = 100
我见过的左外的典型实现连接(即。 into x from y in x.DefaultIfEmpty()
等),但我不能确定如何引入其他的连接条件(AND f.otherid = 17
)
编辑
为什么的AND f.otherid = 17
条件的一部分JOIN而不是在WHERE子句中? 因为f
可能不存在的一些行,我仍然希望这些行被包括在内。如果条件在WHERE子句中应用,在JOIN之后 - 那么我没有得到我想要的行为。
不幸的:
from p in context.Periods
join f in context.Facts on p.id equals f.periodid into fg
from fgi in fg.DefaultIfEmpty()
where p.companyid == 100 && fgi.otherid == 17
select f.value
似乎是相同的:
SELECT f.value
FROM period as p
LEFT OUTER JOIN facts AS f ON p.id = f.periodid
WHERE p.companyid = 100 AND f.otherid = 17
这是不太我后。
甜!我一直在寻找这一段时间,但不知道如何搜索这个。不知道如何添加标签到这个答案。这里是我使用的搜索条件: LINQ到SQL过滤器在连接或从 LINQ到SQL where子句在连接或从 – Solburn 2010-09-21 14:59:01