How to do Azure search for text containing quotes(escape single quote)?

旧时模样 提交于 2021-02-20 19:33:49

问题


I have a Query for azure search as given below

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

the current Query Gives error because as i have given every provider inside quotes , but Gilbert's Yard already have a Quote inside the provider name itself, so to search for same Query with "Gilbert's yard" what change i have to make in the Query?

The above Query is generated like this,

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

And how i should change my Code here?


回答1:


To achieve this we need to replace single quote with two single quotes.

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

this will do the trick for me.



来源:https://stackoverflow.com/questions/43730532/how-to-do-azure-search-for-text-containing-quotesescape-single-quote

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!