【问题标题】:How to do Azure search for text containing quotes(escape single quote)?Azure 如何搜索包含引号的文本(转义单引号)?
【发布时间】:2017-05-02 15:14:00
【问题描述】:

我有一个 Azure 搜索查询,如下所示

results = indexClient.Documents.Search<Hotel>("", new SearchParameters { IncludeTotalResultCount = true, Filter = "(Provider eq 'Auction.com' or Provider eq 'Zeroiron' or Provider eq 'Gilbert'sYard')" });

当前的查询给出错误,因为我已经在引号内给出了每个提供者,但是吉尔伯特的院子已经在提供者名称本身中有一个引号,所以要使用“吉尔伯特的院子”搜索相同的查询,我必须在查询?

上面的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(")");
            }

我应该如何在这里更改我的代码?

【问题讨论】:

    标签: c# azure-cognitive-search


    【解决方案1】:

    为此,我们需要用两个单引号替换单引号。

    filterString.Append(($"Provider eq '{provider.ProviderName.replace("'","''")}'"));
    

    这对我有用。

    【讨论】:

      猜你喜欢
      • 2020-07-18
      • 2011-08-27
      • 2018-08-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-16
      • 1970-01-01
      • 2021-08-16
      相关资源
      最近更新 更多