मेरे पास निम्न SQL है, जिसे मैं 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
मैंने बाएं बाहरी जुड़ाव (यानी into x from y in x.DefaultIfEmpty()
आदि) के विशिष्ट कार्यान्वयन को देखा है, लेकिन यह अनिश्चित है कि अन्य जुड़ने की स्थिति को कैसे शुरू किया जाए ( AND f.otherid = 17
)
संपादित करें
AND f.otherid = 17
WHERE क्लॉज में बजाय JOIN के हालत हिस्सा क्यों है ? क्योंकि f
कुछ पंक्तियों के लिए मौजूद नहीं हो सकता है और मैं अभी भी इन पंक्तियों को शामिल करना चाहता हूँ। जोइन के बाद अगर WHERE क्लॉज में यह शर्त लागू होती है, तो मुझे वह व्यवहार नहीं मिलता, जो मैं चाहता हूं।
दुर्भाग्य से यह:
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
जो काफी नहीं है कि मैं उसके बाद क्या हूं।