Как сделать выборку, (многие ко многим)?

Здравствуйте, у меня есть таблица (многие ко многим) в ней есть поля:
  • id
  • order_id
  • product_id


Я хочу получить список продуктов в определённом заказе.
Я пытался получить список id продуктов:
var ids = from prd in context.Positions.Where(p => p.order_id == order_id)
            select new
            {
                prd.product_id
            };


Затем пытался найти какой-то эквивалент WHERE...IN, но у меня так и не получилось:
var products = from prd in context.Products
                            where ids.Contains(prd.id)
                            select prd;


До сдачи курсача 8ч, пожалуйста помогите разобраться.
  • Вопрос задан
  • 314 просмотров
Пригласить эксперта
Ответы на вопрос 1
ayazer
@ayazer
Sr. Software Engineer
не нужно тут выполнять 2 отдельных запроса, все можно достать одним же

var products = from p in context.Products 
                               join o in context.Orders on p.Order_Id equals o.Id
                               where o.Id == <НОМЕР ЗАКАЗА>
                               select p;


АПД:
LINQ запросы ленивые. Этот код просто построит запрос, но не будет выполнять его до момента пока на самом деле не понадобяться данные. Если нужно их передать в другой контекст - можно сразу сделать что-то типа .AsEnumerable() чтоб загрузить все данные в память.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы