如何在 Azure 中搜索包含引号(转义单引号)的文本?
How to do Azure search for text containing quotes(escape single quote)?
我有一个 Azure 搜索查询,如下所示
results = indexClient.Documents.Search<Hotel>("", new SearchParameters { IncludeTotalResultCount = true, Filter = "(Provider eq 'Auction.com' or Provider eq 'Zeroiron' or Provider eq 'Gilbert'sYard')" });
当前查询给出错误,因为我已经在引号内给出了每个提供者,但 Gilbert's Yard 已经在提供者名称本身内有一个引号,所以要使用 "Gilbert's yard" 搜索相同的查询我必须做些什么改变在查询中进行?
上面的Query是这样生成的,
var selectedProviders = this.Providers.Where(i => i.IsSearchable).ToList();
if (selectedProviders.Count > 0)
{
if (filterString.Length > 0)
filterString.Append(" and ");
filterString.Append("(");
var count = 1;
foreach (var provider in selectedProviders)
{
filterString.Append(($"Provider eq '{provider.ProviderName}'"));
if (count < selectedProviders.Count)
{
filterString.Append(" or ");
}
count++;
};
filterString.Append(")");
}
我应该如何更改此处的代码?
为此,我们需要用两个单引号替换单引号。
filterString.Append(($"Provider eq '{provider.ProviderName.replace("'","''")}'"));
这对我有用。
我有一个 Azure 搜索查询,如下所示
results = indexClient.Documents.Search<Hotel>("", new SearchParameters { IncludeTotalResultCount = true, Filter = "(Provider eq 'Auction.com' or Provider eq 'Zeroiron' or Provider eq 'Gilbert'sYard')" });
当前查询给出错误,因为我已经在引号内给出了每个提供者,但 Gilbert's Yard 已经在提供者名称本身内有一个引号,所以要使用 "Gilbert's yard" 搜索相同的查询我必须做些什么改变在查询中进行?
上面的Query是这样生成的,
var selectedProviders = this.Providers.Where(i => i.IsSearchable).ToList();
if (selectedProviders.Count > 0)
{
if (filterString.Length > 0)
filterString.Append(" and ");
filterString.Append("(");
var count = 1;
foreach (var provider in selectedProviders)
{
filterString.Append(($"Provider eq '{provider.ProviderName}'"));
if (count < selectedProviders.Count)
{
filterString.Append(" or ");
}
count++;
};
filterString.Append(")");
}
我应该如何更改此处的代码?
为此,我们需要用两个单引号替换单引号。
filterString.Append(($"Provider eq '{provider.ProviderName.replace("'","''")}'"));
这对我有用。