0
我一直試圖執行一個左連接到LINQ實體類型的表達式,但是DefaultIfEmpty方法的工作方式與我的預期不同 - 它爲每個CounterNo返回一個空行,它沒有在閱讀表中匹配。DefaultIfEmpty返回空行
var leftjoin = from counter in database.Counters
join reading in database.Readings
on counter.CounterNo equals reading.CounterNo into gj
from x in gj.DefaultIfEmpty()
select x;
這樣我不知道Counters表中的哪行沒有對應的行Readings表。
我該如何做這項工作?
你是否建議我應該用ID在Counters表中對記錄進行分組?這沒有達到我想要的 - 查詢不會返回左側表中沒有左側表中相應值的行。 – thespeedkills
@thespeedkills正如我所說,你所要做的就是刪除我引用的那一行。在完成之後,'gj'將成爲右表中與左表中當前行匹配的所有行的集合。如果沒有匹配的項目,該集合的大小爲零。如果有一個匹配項目,它將是第一個。如果有10個匹配項目,它將是10號。例如,如果您希望左側表中的所有行都不匹配右側,則可以添加「where!gj.Any()」。 – Servy
哦,我對Linq有點新,並不知道這個結構是可行的。 但是讓我們假設我想知道右側表中相應行的最大值(例如,reading.Value)。恐怕用你建議的解決方案是無法實現的。 – thespeedkills