c# - 使用多个筛选器的 Azure 搜索
问题描述
我有三个过滤器,即需要应用于搜索查询的类别、子类别和产品类型。我目前正在使用 Azure 搜索。截至目前,我正在使用 odata 过滤器,如下面的代码所示。
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,那么它应该显示与该 Category Id 相关的结果。如果用户同时应用 categoryId 和 subcategoryId,他应该能够看到与指定过滤器类别匹配的两个产品和subcategory.If 只提交 producttypeId 那么他应该能够看到与该 producttypeId 相关的产品。当然,我可以使用 if 和 else 并使用“逻辑或”和“逻辑与”构建我的过滤器。如果有任何 Odata 库可以在这方面帮助我?
解决方案
感谢您的建议。我使用 OData FilterString 解决了这个问题
string filterquery = FilterString.Generate<Product>(p => p.Category.Id == category &&
p.SubCategory.Id == subCategory &&
p.ProductType.Id == productType);
parameters.Filter = filterQuery;
推荐阅读
- php - 为什么 open_ssl 函数使用 DES-EDE3-CBC 返回奇怪的字符?
- angular - Angular- Material tags are not working properly
- kedro - kedro nodes input accept kwargs?
- c# - Reading email of other user using Gmail API
- java - Spring boot jar doesnt pick property if the properties file are split up
- python - How to draw plus sign (+) into n*n numpy zero array
- python - Too many boolean expressions in if statement, how to fix that?
- eclipse - Spring Tool Suite 4.7.1 更新后的编辑器错误
- node.js - Mongoose schema validation not working while adding data
- javascript - Replacing every item at i with j value in an array with JavaScript