我正试图执行两个表之间的连接,并通过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的数据类型也可能会发挥作用 - 对于我来说(对于不熟悉代码的人来说)很容易对这些数据类型做出假设。 –