Я пытаюсь выполнить объединение двух таблиц и ограничить результаты тремя условиями. 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, затем фильтрации на основе метаID (тип статьи), statusID, а затем получения всех статей, которые больше, чем datetime created
. Проблема в том, что он возвращает 2 записи (из 4 на данный момент). Один имеет date_created
меньше created
, а другой - запись, которая выдала created
на первом месте (таким образом, равной).
Удалив объединение и предложение where для мета, результат не даст никаких записей (ожидается). Что я не могу понять, так это то, что когда я перевожу это объединение в обычный SQL, оно работает просто отлично Очевидно, я не понимаю, какова функциональность join
в этом контексте. Что вызвало бы такое поведение?
Редактировать:
Попробовав это в LinqPad, я заметил, что LinqPad дает ожидаемые результаты. Я пробовал эти запросы отдельно в коде, и до тех пор, пока не будет добавлено объединение, незаполненные результаты начнут заполняться это происходит при любом сравнении дат, когда запись происходит в тот же день, что и ограничитель.