Задать вопрос
@M-Misha-M
горе-junior, программирую на C#, изучаю .Net

Как исправить мой LINQ запрос?

Здравствуйте, делаю интернет магазин и пытаюсь реализовать функцию "похожие товары", тоесть мы заходим в определенную категорию товаров, заходим в вьюшку с детальным описаниям товара и внизу мы предлагаем похожие за категорией товары, за идею было взято использовать LINQ запросы с рандомным выводом записей по категории из таблицы БД, и выводить их на вьюшку. Смотрите вот один из моих запросов:
public PartialViewResult Test2()
        {

            ListViewModel model = new ListViewModel
            {
                Furnitures = repository.Furnitures
                .Where(x =>   x.Category.Equals("Кухни"))
                .OrderBy(r => Guid.NewGuid()).Take(1)              
        };
            return PartialView(model);
            
        }


Тут всё хорошо и работает , выводит рандомную запись из таблицы по категории "Кухни" и отображается на странице. Но такой запрос я не могу использовать потому что на всех категориях у меня будет отображаться только товары из категории "Кухни". Вопрос: Как выводить рандомные товары из таблицы в зависимости от той категории на которой мы находимся?? Например, мы зашли в категорию "кровати" и нам вывело рандомный список товаров из кроватей, зашли в раздел Шкафы, нам вывело список рандомных товаров из категории шкафов. Я попробовал переделать данный метод на такой:
public PartialViewResult Test2(string category)
        {

            ListViewModel model = new ListViewModel
            {
                Furnitures = repository.Furnitures
                .Where(x => category == null ||  x.Category == category)
                .OrderBy(r => Guid.NewGuid()).Take(1),

            CurrentCategory = category
            };
            return PartialView(model);
            
        }

Но он выводит со всех категорий данные, можно как то переделать запрос?? Спасибо!
  • Вопрос задан
  • 149 просмотров
Подписаться 1 Оценить Комментировать
Решения вопроса 1
Сделайте просто как в первом примере.
.Where(x.Category.Equals(category))
Если category будет null или пустой строкой то и категории такой не будет или там товары не попадающие под категорию.

У вас отображались все категории потому что срабатывало условие category == null. В отладчике точно проверьте что переменная задана.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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