第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

LINQ to SQL - 具有多個(gè)連接條件的左外連接

LINQ to SQL - 具有多個(gè)連接條件的左外連接

RISEBY 2019-08-24 16:50:14
LINQ to SQL - 具有多個(gè)連接條件的左外連接我有以下SQL,我試圖將其轉(zhuǎn)換為LINQ:SELECT f.valueFROM period as p LEFT OUTER JOIN facts AS f ON p.id = f.periodid AND f.otherid = 17WHERE p.companyid = 100我已經(jīng)看到了左外連接的典型實(shí)現(xiàn)(即into x from y in x.DefaultIfEmpty()等),但我不確定如何引入其他連接條件(AND f.otherid = 17)編輯為什么AND f.otherid = 17條件是JOIN的一部分而不是WHERE子句?因?yàn)閒某些行可能不存在,我仍然希望包含這些行。如果條件在WHERE子句中應(yīng)用,在JOIN之后 - 那么我沒有得到我想要的行為。不幸的是:from p in context.Periodsjoin f in context.Facts on p.id equals f.periodid into fgfrom fgi in fg.DefaultIfEmpty()where p.companyid == 100 && fgi.otherid == 17select f.value似乎等同于:SELECT f.valueFROM period as p LEFT OUTER JOIN facts AS f ON p.id = f.periodid WHERE p.companyid = 100 AND f.otherid = 17這不是我想要的。
查看完整描述

3 回答

?
波斯汪

TA貢獻(xiàn)1811條經(jīng)驗(yàn) 獲得超4個(gè)贊

您需要在致電前介紹您的加入條件DefaultIfEmpty()。我只想使用擴(kuò)展方法語法:

from p in context.Periodsjoin f in context.Facts on p.id equals f.periodid into fgfrom fgi in fg.Where(f => f.otherid == 17).DefaultIfEmpty()where p.companyid == 100select f.value

或者您可以使用子查詢:

from p in context.Periodsjoin f in context.Facts on p.id equals f.periodid into fgfrom fgi in (from f in fg             where f.otherid == 17
             select f).DefaultIfEmpty()where p.companyid == 100select f.value


查看完整回答
反對 回復(fù) 2019-08-24
?
Helenr

TA貢獻(xiàn)1780條經(jīng)驗(yàn) 獲得超4個(gè)贊

在我看來,在嘗試翻譯它之前,考慮對SQL代碼進(jìn)行一些重寫是有價(jià)值的。

就個(gè)人而言,我會(huì)寫一個(gè)像union這樣的查詢(雖然我完全避免使用null!):

SELECT f.value
  FROM period as p JOIN facts AS f ON p.id = f.periodid
WHERE p.companyid = 100
      AND f.otherid = 17UNION
SELECT NULL AS value
  FROM period as p
WHERE p.companyid = 100
      AND NOT EXISTS ( 
                      SELECT * 
                        FROM facts AS f
                       WHERE p.id = f.periodid
                             AND f.otherid = 17
                     );

所以我想我同意@ MAbraham1答案的精神(盡管他們的代碼似乎與這個(gè)問題無關(guān))。

但是,似乎查詢明確地設(shè)計(jì)為生成包含重復(fù)行的單個(gè)列結(jié)果 - 實(shí)際上是重復(fù)的空值!很難不得出這種方法存在缺陷的結(jié)論。


查看完整回答
反對 回復(fù) 2019-08-24
  • 3 回答
  • 0 關(guān)注
  • 1292 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)