LINQ'ya çevirmeye çalıştığım aşağıdaki SQL var:
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
Sol dış birleşimin tipik uygulamasını gördüm (örn. into x from y in x.DefaultIfEmpty()
Vb.), Ancak diğer birleştirme koşulunu ( AND f.otherid = 17
) nasıl tanıtacağımdan emin değilim
DÜZENLE
AND f.otherid = 17
Koşul neden WHERE yan tümcesi yerine JOIN'in bir parçasıdır? Çünkü f
bazı satırlar için mevcut olmayabilir ve yine de bu satırların dahil edilmesini istiyorum. Koşul, JOIN'den sonra WHERE yan tümcesine uygulanırsa - o zaman istediğim davranışı alamıyorum.
Maalesef bu:
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
buna eşdeğer görünüyor:
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
bu tam olarak peşinde olduğum şey değil.