我正在尝试在两个表之间执行连接并通过3个条件限制结果。其中2个条件属于主表,第三个条件属于次要表。以下是我尝试的查询:
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);
它的意思是通过contentID连接两个表,然后根据metaID(文章类型)、statusID进行筛选,最后获取所有大于datetime
created
的文章。问题在于它只返回了2条记录(目前共4条)。其中一条date_created
小于created
,另一条与第一条相同(因此相等)。通过移除关于meta的join和where子句,结果没有记录(符合预期)。我无法理解的是,当我将这个join转换成常规SQL时,它可以正常工作。显然,我误解了在这种情况下
join
的功能。是什么导致了这种行为?编辑:在LinqPad中尝试过后,我发现LinqPad提供了预期的结果。我已经分别在代码中尝试了这些查询,但只有在添加join之后才会出现奇怪的结果,似乎是在与限制器相同日期的记录上发生了这种情况。