Моя база данных состоит из двух моделей: Продукты и категории. Сама модель категории состоит из категорий родителей и детей, как для определенного поля «ParentID», связанного с другими. Отношение Родитель к категории детей - одно для многих. Дети могут быть любым числом от нуля до «n». Категория отношения (или подкатегория) к Продуктам является одной для многих, а CategoryID - таблицей FK в продуктах.Поиск строки внутри продуктов, категорий и подкатегорий
Я начал писать поиск среди названия и описания и категория Имя продуктов:
IQueryable<Product> products =
from p in db.Products
where (p.Name.Contains(searchString)
|| p.Description.Contains(searchString)
|| p.Category.Name.Contains(searchString))
select p;
Поскольку форма позволяет пользователю выбрать определенную категорию из DDL, в случае, если была выбрана категория Мне нужно Теперь, чтобы расширить свой запрос подкатегорий следующим образом:
ищет строку поиска в имя детей категорий слишком
результатов фильтрации для тех, кто принадлежит к категории и подкатегории только
добавления новых элементов предыдущего результата
Как я должен циклу внутри дочерних категории имени, чтобы выполнить Баллы 1.2.3, добавление Необходимый результат для ранее выбранного?
Добавление модели (только соответствующие поля):
public partial class Product
{
public int ID { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public int CategoryID { get; set; }
}
public partial class Category
{
public int ID { get; set; }
public string Name { get; set; }
public int? ParentID { get; set; }
public virtual ICollection<Product> Products { get; set; }
}
Пытаясь лучше объяснить.Дано:
- Строка поиска (нет строки поиска возвращает все продукты)
- выбранной родительской категории (по желанию, выбор не возвращает все категории)
Я хочу, чтобы извлечь все продукты, где:
СЛУЧАЙ 'A': нет родительской категории выбрана именем
- продуктов содержит поиск Строка
- все категории содержит строки поиска
ДЕЛУ «B»: Родительская категорию выбранного имени
- продуктов содержит строку поиска (только те продукты , относящееся к выбранной родительской категории и ее категории детей, , если таковые имеются)
- имя выбранной родительской категории содержит строку поиска
- отдельные категории детей родителя (i е любое) имя содержит строку поиска
Не могли бы вы добавить код, определяющий отношения 'Product' и' Category' на ваш вопрос? У вас действительно есть отношение «один к одному» между «Продуктом» и «Категорией»? Звучит немного интуитивно понятным для «Категории» только для одного «продукта» ... – wkl
Вы действительно правы. Я отредактировал отношение, это много продуктов для категории. – Luke