2014-01-13 5 views
0

Я использую asp.net 4.5.1 webform с EF codefirst; Существует два класса Продукта и категории; каждый продукт может иметь много категорий. и каждая категория может иметь много продуктов. когда я хочу выбрать все продукты в выбранных категориях пользователем, я использую:Обратный запрос обратной связи

List<int> CatId = new List<int>(); 
// add all the selected category Id to the CatId list. 
_db.Categories.Where(p => CatId.Contains(p.CategoryID)).SelectMany(p => p.Products); 

этот код работа товар. мой вопрос в том, как я могу написать этот запрос в обратном представлении? Позвольте мне объяснить подробнее, этот код выбирает категории, которые пользователь выбрал, затем выберите все продукты в этой категории. (Из категории) , но я хочу сделать это из представления продукта, это означает, что сначала выберите продукты, затем проверьте, что продукт находится в эта категория или нет.

Я знаю, что результат обоих запросов одинаковый. но мне нужно это сделать.

+0

Как продукт и категория, связанные с вашим кодом? Пожалуйста, покажите ключи и/или свойства навигации, которые у вас есть. –

ответ

1

Если продукт имеет только одну категорию:

_db.Products.Where(p => CatId.Contains(p.Category.CategoryID)); 

Если продукт может иметь несколько категорий:

_db.Products.Where(p => p.Categories.Any(c => CatId.Contains(c.CategoryID))); 

Рассмотрим также переименовывать список категорий идентификаторов categoryIds, чтобы показать, что он представляет собой набор идентификаторов, не единый идентификатор.

Смежные вопросы