在sitecore中,使用快速查询获取所有子项和子项

在sitecore中,使用快速查询获取所有子项和子项,sitecore,sitecore7,Sitecore,Sitecore7,在sitecore中,我想得到所有继承自“工业产品”的孩子和孙子 模板 下面是快速查询,但给出了错误 错误:字符串结尾应在位置5处 快速查询: \u masterdb.SelectItems(“查询:/sitecore/content/Product Catalog/Industrial/Products/*[@@templatename='Industrial Product'])这不是快速查询,您使用的是普通查询。 请使用类似于: Sitecore.Data.Items.Item[] ite

在sitecore中,我想得到所有继承自“工业产品”的孩子和孙子 模板

下面是快速查询,但给出了错误 错误:字符串结尾应在位置5处

快速查询:


\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
    替换为
    fast
    。这意味着它不是“正常”的Sitecore查询,而是Sitecore快速查询。有关使用快速查询的更多信息,请阅读
  • 在使用
    *[@@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']")