在sitecore中,使用快速查询获取所有子项和子项
在sitecore中,我想得到所有继承自“工业产品”的孩子和孙子 模板 下面是快速查询,但给出了错误 错误:字符串结尾应在位置5处 快速查询:在sitecore中,使用快速查询获取所有子项和子项,sitecore,sitecore7,Sitecore,Sitecore7,在sitecore中,我想得到所有继承自“工业产品”的孩子和孙子 模板 下面是快速查询,但给出了错误 错误:字符串结尾应在位置5处 快速查询: \u masterdb.SelectItems(“查询:/sitecore/content/Product Catalog/Industrial/Products/*[@@templatename='Industrial Product'])这不是快速查询,您使用的是普通查询。 请使用类似于: Sitecore.Data.Items.Item[] ite
\u masterdb.SelectItems(“查询:/sitecore/content/Product Catalog/Industrial/Products/*[@@templatename='Industrial Product'])
这不是快速查询,您使用的是普通查询。
请使用类似于:
Sitecore.Data.Items.Item[] items =
database.SelectItems("fast:/sitecore/content/Product Catalog/Industrial/Products//*[@@templateid='yourTemplateId']");
另外,请使用@templateid而不是@templatename,我做了一些测试,使用@templateid速度更快
还可以看看如何使用FastQuery。您的查询不是一个快速查询,如果您使用以下查询,它对我有效:
_masterdb.SelectItems("fast:/sitecore/content/Product Catalog/Industrial/Products//*[@@templatename='Industrial Product']");
此查询中有两个更改:
- 将开头的关键字
替换为query
。这意味着它不是“正常”的Sitecore查询,而是Sitecore快速查询。有关使用快速查询的更多信息,请阅读fast
- 在使用
选择项目之前,我添加了一个双斜杠*[@@templatename='Industrial Product']
。这意味着它使用模板递归搜索所有项目。在查询中,您只搜索直接子项目/
@@templateid
而不是@@templatename
,正如前面所说的那样,重命名模板速度更快,也没有问题。因此,您的查询最后可能会像这样:
fast:/sitecore/content/Product Catalog/Industrial/Products//*[@@templateid='{76036F5E-CBCE-46D1-AF0A-4143F9B557AA}']
注意:这不仅选择您的子女和孙子女。这会递归地为您提供使用此模板的所有项目。试试这个
_masterdb.SelectItems("fast:/sitecore/content/#Product Catalog#/Industrial/Products//*[@@templatename='Industrial Product']")
或
在某些情况下,您可能需要转义包含空格的名称,例如@#由#更新。请使用下面的查询
_masterdb.SelectItems(“查询:/sitecore/content/#产品目录#/Industrial/Products/*[@@templatename='Industrial Product'])”请注意“快速“不一定意味着快。您可能需要研究索引以解决所需问题。或者,由于您使用的是Sitecore 7,请使用
ContentSearchManager
,如果您不想创建自己的搜索索引,请使用,您的回答很全面,我的问题是“普通查询和快速查询之间有什么区别”。@BraveNewMath在大多数情况下,快速查询更快,Sitecore查询数据库的方式不同。一个小谷歌给了我这些链接:和
_masterdb.SelectItems("fast:/sitecore/content/#Product Catalog#/Industrial/Products//*[@@templatename='industrial product']")