LINQ to SQL - Left Outer Join with multiple join conditions

Posted by dan on Stack Overflow See other posts from Stack Overflow or by dan
Published on 2009-07-14T00:53:09Z Indexed on 2010/06/01 12:43 UTC
Read the original article Hit count: 433

Filed under:
|
|
|
|

I have the following SQL which I am trying to translate to LINQ:

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

I have seen the typical implementation of the left outer join (ie. into x from y in x.DefaultIfEmpty() etc.) but am unsure how to introduce the other join condition ('AND f.otherid = 17')

EDIT

Why is the 'AND f.otherid = 17' condition part of the JOIN instead of in the WHERE clause? Because f may not exist for some rows and I still want these rows to be included. If the condition is applied in the WHERE clause, after the JOIN - then I don't get the behaviour I want.

Unfortunately this:

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

seems to be equivalent to this:

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

which is not quite what I'm after.

© Stack Overflow or respective owner

Related posts about c#

Related posts about sql