Sitecore快速查询 - 如何搜索包含特殊字符(如撇号)的文本?

时间:2013-05-31 00:05:28

标签: c# .net escaping sitecore

也许我是盲人但我找不到任何关于为Sitecore的快速查询转义特殊字符的文档。

例如,我想搜索其描述中包含以下文字的内容项:“hot n'chicious”

注意:我尝试过以下转义:

var searchTerm = "hot n'' tasty";  // thought it might need to be escaped for sql
var searchTerm = "#hot n' tasty#"; // this is how you do some other sitecore escaping
var searchTerm = "hot n\' tasty";

示例应用程序代码:

var searchTerm = "hot n' tasty";
var query = string.Format("fast:/sitecore/content/Home/Products//*[@ContentDescriptionText='%{0}%']", searchTerm);
var items = Database.SelectItems(query);

目前,这给了我一个例外,所以我假设我需要做一些逃避:

  

“]”预计在第67位。

     

描述:执行期间发生了未处理的异常   当前的网络请求。请查看堆栈跟踪了解更多信息   有关错误的信息以及它在代码中的起源。

     

异常详细信息:Sitecore.Data.Query.ParseException:“]”预期在   第67位。

2 个答案:

答案 0 :(得分:7)

Here is a post完全按照您的意图行事。基本上,您必须使用转义双引号来包装包含引号的字段值。

var searchTerm = "hot n' tasty";
var query = string.Format("fast:/sitecore/content/Home/Products//*[@ContentDescriptionText=\"%{0}%\"]", searchTerm);
var items = Database.SelectItems(query);

编辑:添加了关于逃避快速查询及其限制的CoolMcGrr参考链接.. here

答案 1 :(得分:4)

根据@ Kevin的回答和链接,我能够找到合适的解决方案:

var searchTerm = "hot n' tasty";
// old code for comparison
//var query = string.Format("fast:/sitecore/content/Home/Products//*[@ContentDescriptionText='%{0}%']", searchTerm);
var query = string.Format("fast:/sitecore/content/Home/Products//*[@ContentDescriptionText=\"%{0}%\"]", searchTerm);
var items = Database.SelectItems(query);