Linq и EF на .Any () - PullRequest
       10

Linq и EF на .Any ()

3 голосов
/ 15 марта 2011

Я использую c #, linq и EF4.

В моей базе данных есть две таблицы, представленные в моей концептуальной модели:

Таблицы базы данных:

CmsContents
CmsCategories
CmsRelatedCategories (Pure Juction Table)

Тип объекта:

CmsContent
CmsCategory

Набор предметов:

CmsContents
CmsCategories

У меня есть некоторые навигационные свойства:

for CmsContents --> CmsCategories --> Return Collection of Cms CmsCategory
for CmsCategories --> CmsContents --> Return Collection of Cms CmsContents

Представлены данные в базе данных для соединительной таблицы:

CategoryId     ContentId
7              1
7              2
9              2

Мне нужно запросить Entry Framwork, чтобы получить все CmsContents, которые включены в Соединительную таблицу.

На данный момент я использую этот код:

var contents = from cnt in context.CmsContents
                               where cnt.CmsCategories.Any()
                               select cnt;

Возвращает:

CmsContents
1
2

Мне нужен результат, показывающий вместо:

CmsContents
1
2
2

Я подозреваю, что Any () показывает мне только значения DISTINCT, но мне нужны все значения в списке.

Есть идеи, как ее решить?

Не могли бы вы написать мне запрос LINQ, чтобы я мог получить четкую картину.

1 Ответ

7 голосов
/ 15 марта 2011

Any() не возвращает значений вообще - он возвращает логическое значение относительно того, есть ли какие-либо значения в коллекции или нет.Он просто показывает два значения, потому что вы запрашиваете только CmsContents, у которого есть две строки, и обе строки имеют хотя бы одну категорию, поэтому обе строки находятся в результате.

Похоже, что вы действительно что-то ищетекак:

var contents = from cnt in context.CmsContents
               from category in cnt.CmsCategories
               select cnt;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...