Entity Framework выбрать из таблицы ссылок со списком - PullRequest
1 голос
/ 24 сентября 2010

Используя следующую структуру таблицы базы данных:

Заказ Таблица:

OrderId
OrderName

OrderItem Таблица:

OrderId
ItemId

Позиция Таблица:

ItemId
ItemName

У меня есть сущность 'Order', у которой есть коллекция 'Items'. Что мне нужно сделать, это вернуть все заказы, которые содержат определенные элементы. Пример: все заказы с предметами с id: 1, 4 и 5 (мне все равно, есть ли у него другие предметы) В настоящее время у меня есть выбранные идентификаторы в объекте List (хотя это не обязательно должен быть список). Я пробовал разные идеи с помощью метода «содержит», но безрезультатно.

Поскольку OrderItem является таблицей ссылок, я не могу получить к ней доступ как к самой сущности. Если бы я мог тогда, вероятно, я мог бы сделать:

context.OrderItems.Where(m => selectedIds.Contains(m.ItemId))

или что-то в этом роде.

Есть ли способ сделать это в одном запросе без необходимости циклически проверять результаты?

Спасибо

1 Ответ

3 голосов
/ 24 сентября 2010
context.Orders.Where(o => o.Items.Any(i => selectedIds.Contains(i.ItemId)))

Для этого требуется EF 4.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...