我正試圖執行兩個表之間的連接,並通過3個條件限制結果。 2個條件屬於主表,第三個條件屬於副表。下面是我試圖查詢:LINQ連接行爲奇怪
var articles = (from article in this.Context.contents
join meta in this.Context.content_meta on article.ID equals meta.contentID
where meta.metaID == 1 && article.content_statusID == 1 && article.date_created > created
orderby article.date_created ascending
select article.content_text_key);
它是爲了參加由內容識別的兩個表,然後篩選基礎上,metaID(類型的文章),statusID,然後得到是更大的所有文章比日期時間created
。問題是它返回2條記錄(當前爲4條)。其中一個date_created
小於created
,另一個是首先產生created
(因此相等)的記錄。
通過刪除元的連接和where子句,結果不會生成任何記錄(預期)。我不明白的是,當我將這個連接轉換爲常規SQL時,它工作得很好。顯然,我誤解了join
的功能。什麼會導致這種行爲?
編輯:
在LinqPad嘗試過這個,我已經注意到,LinqPad提供預期的結果。我已經在代碼和
中單獨嘗試了這些查詢,直到添加了連接後纔開始填充奇數結果
,它似乎在記錄與限制器同一天發生的任何日期比較中發生。
你還可以發佈4行數據嗎? – VVS
檢查LinqPad如果你還沒有 – hunter
它也可能有助於看到你的模式。 metaID,content_statusID和date_created的數據類型也可能會發揮作用 - 對於我來說(對於不熟悉代碼的人來說)很容易對這些數據類型做出假設。 –