试图弄清楚为什么以下过滤器返回不同结果的原因。
根据docs,我应该可以将and or
条件与search in
函数一起使用
search.in(f,'a,b,c')在语义上等同于f eq'a'或f eq 'b'或feq'c',不同之处在于当 值很大。
但是以下过滤器返回不同的结果。但是为什么呢?
// Returns nothing
$count=true&$filter=companyGroupId eq 1595 and search.in(companyName, 'Sky Blue, Green Ice')
但是如果我这样做的话
// Returns expected results
$count=true&$filter=companyGroupId eq 1595 and (companyName eq 'Sky Blue' or companyName eq 'Green Ice')
为什么结果对我来说如此不同,似乎它们应该是相同的。
我的CompanyName属性看起来像这样
[IsFilterable]
[IsSortable]
[IsFacetable]
public string CompanyName { get; set; }
答案 0 :(得分:1)
由于search.in
解析第二个参数的方式,它们是不同的。由于您的值中包含空格,因此您需要将自己的分隔符指定为search.in
的第三个参数。默认行为是使用空格和逗号分隔。尝试以下方法:
search.in(companyName, 'Sky Blue|Green Ice', '|')
您还可以找到其他使用search.in
here的示例。