Azure Поиск с использованием нескольких фильтров - PullRequest
0 голосов
/ 02 марта 2020

У меня есть три фильтра, а именно категория, подкатегория и тип продукта, которые необходимо применить к поисковому запросу. В настоящее время я использую Azure Поиск. На данный момент я использую фильтр данных, как показано в приведенном ниже коде.

SearchParameters parameters = new SearchParameters();

        string searchText = Request.Query["query"];
        string category = Request.Query["c"];
        string subCategory = Request.Query["sc"];
        string productType = Request.Query["pt"];

        parameters.Filter = $"Category/Id eq '{category}' or SubCategory/Id eq '{subCategory}'" +
                              $"or ProductType/Id eq '{productType}'";

Как получить результат, в котором, если пользователь применяет categoryId, то он должен отображать результаты, относящиеся к этой категории Id. Если пользователь применяет и categoryId, и subcategoryId, он должен иметь возможность видеть оба продукта, которые соответствуют указанной категории фильтра и подкатегории. Если только отправляется producttypeId, то он должен иметь возможность видеть продукты, относящиеся к этот producttypeId. Конечно, я мог бы использовать if и else и построить свой фильтр, используя «логические или» и «логические и». Есть ли какая-нибудь библиотека данных, которая бы мне помогла в этом отношении?

1 Ответ

0 голосов
/ 03 марта 2020

Спасибо за предложение. Я обошел эту проблему, используя OData FilterString

 string filterquery = FilterString.Generate<Product>(p => p.Category.Id == category && 
            p.SubCategory.Id == subCategory &&                            
            p.ProductType.Id == productType);

 parameters.Filter = filterQuery;
...