Фильтр поиска Azure с пингами в результатах поиска

Я создаю приложение, где вы можете искать геймеров. У меня есть фильтр ниже:

var filter = $ "(Game / any (x: search.in (x, '{string.Join (" | ", query.Games)}', '|')))";

Свойство Game представляет собой коллекцию Edm.Collection, и если в списке query.Games присутствует одно или несколько слов в играх, то должно быть совпадение. Это прекрасно работает в большинстве сценариев. Но нет, если одна из игр содержит '(пинг). Пинг не является специальным символом, как избежать этого?

1 ответ

Одинарные кавычки являются зарезервированными символами в синтаксисе фильтра OData. Одинарные кавычки (') используются для разделения литерала, используемого в выражении фильтра. Чтобы обойти это, вы можете добавить дополнительную одинарную кавычку к той, которая указана в названии вашей игры, и она будет интерпретирована как цитата, являющаяся частью текста.

Например если у вас есть игра с именем ga'me2, вы можете использовать ее в фильтре, как показано ниже.

$filter=Game/any(x: search.in(x, 'game1, ga''me2') 

В вашем случае вам, вероятно, придется сделать String.Replace для отдельных названий игр.

Другие вопросы по тегам