LINQ join ведет себя странно - PullRequest
3 голосов
/ 29 июля 2011

Я пытаюсь выполнить объединение двух таблиц и ограничить результаты тремя условиями. 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 дает ожидаемые результаты. Я пробовал эти запросы отдельно в коде, и до тех пор, пока не будет добавлено объединение, незаполненные результаты начнут заполняться это происходит при любом сравнении дат, когда запись происходит в тот же день, что и ограничитель.

Ответы [ 2 ]

2 голосов
/ 29 июля 2011

Кажется, я не могу добавить комментарий, но в режиме отладки вы можете поставить точку останова в этой строке кода. Когда вы это сделаете, вы сможете навести на него курсор и сообщить ему sql, который генерирует LINQ. Пожалуйста, разместите этот sql.

0 голосов
/ 31 июля 2011

По вашему предложению я публикую свой комментарий в качестве ответа:

"Это также может помочь увидеть вашу схему. Типы данных для metaID, Content_statusID и date_created могут также вступить в игру - и мне (кому-то, кто не знаком с вашим кодом) легко предположения об этих типах данных. "

...