在 OData search.in 中,如果我保留默认分隔符 '、' 或 ' ',则不会返回任何值

In OData search.in, if I leave the default delimiter of ', ' or ' ', no value is returned

我正在测试搜索 api 过滤并有一个类型为 Collection(Edm.String) 的 relatedTags 参数,当我执行以下过滤器时:

relatedTags/any(rt: search.in(rt, 'Tag 3, Tag 2'))

相当于

relatedTags/any(rt: rt eq 'Tag 3' or rt eq 'Tag 2')

只有后者会 return 结果,其中字符串数组 relatedTags 具有这些值之一。 如果我将分隔符设置为 '|'',':

relatedTags/any(rt: search.in(rt, 'Tag 3|Tag 2', '|'))

它会 return 与上面的 eq 示例相同吗?

即使将分隔符指定为 ' ,'' ' 也不会 return 结果。

relatedTags/any(rt: search.in(rt, 'Tag 3, Tag 2', ' ,'))

search.in OData 语言参考页有一个示例,与我在第一个示例中编写的相同:

Rooms/any(room: room/Tags/any(tag: search.in(tag, 'wifi, tub')))

您的查询与示例不同,因为逗号分隔列表中的值包含 space。您需要将分隔符设置为逗号,而不是 space 或逗号:

relatedTags/any(rt: search.in(rt, 'Tag 3,Tag 2', ','))

您可能还需要 trim 白色 space 标记周围才能使其正常工作。