Поиск API графа со специальным символом в $фильтре

#c# #filter #microsoft-graph-api #odata #special-characters

Вопрос:

Ниже приведен код. Если я передам значение поиска параметра поиска, например: M’test. Это приводит к ошибке.

Как правильно использовать этот код для поддержки специального символа, такого как «‘»?

 var graphClient = await GetGraphClient();
List<QueryOption> queryOptions = new List<QueryOption>();
queryOptions.Add(new QueryOption("$filter", string.Format("startswith(displayName,'{0}')", search)));
var collection = await graphClient.Data.Request(queryOptions).GetAsync();
 

Ответ №1:

Экранирование одинарных кавычек

Для запросов, использующих одинарные кавычки, если какие-либо значения параметров также содержат одинарные кавычки, они должны быть экранированы дважды; в противном случае запрос завершится ошибкой из-за недопустимого синтаксиса.

В вашем примере M'test это должно было бы быть M''test .

Скорее всего, вы могли бы просто использовать string.Replace или регулярное выражение для замены ' на ''

Комментарии:

1. Спасибо за быстрый ответ. Это работает.