Product
и ProductCategory
таблицы «связаны» через таблицу «многие ко многим» ProductToCategory
.
Для некоторого продукта с некоторым идентификатором (давайте пометим его как product_1 ), мне нужно получить следующий продукт той же категории , что и product_1 .
Я хотел сделать это с одним запросом, поэтому следующий запрос выполняет свою работу, но sql-profiler показывает очень ОГРОМНЫЙ запрос. Есть какие-нибудь предложения, как переписать запрос?
(from p in cxt.Products
join c in cxt.ProductToCategories on p.Id equals c.ProductId
where p.Id > id && c.CategoryId == (from p2 in cxt.Products
join c2 in cxt.ProductToCategories on p.Id equals c.ProductId
where p2.Id == id
select c2.CategoryId).FirstOrDefault()
orderby p.Id
select p).FirstOrDefault();