【发布时间】:2023-03-05 02:41:01
【问题描述】:
我有一个名为 MyItems 的 Sitecore 文件夹,其中包含 MyItem 类型的项目。我需要使用 sitecore 查询或 xpath 从 .net 代码中查询项目。 MyItem 具有 TreelistEx 类型的字段 MyField。我需要选择 MyField 包含“值”(其他项目的 guid)的所有项目。我该怎么做?
非常感谢
【问题讨论】:
标签: asp.net sitecore sitecore6
我有一个名为 MyItems 的 Sitecore 文件夹,其中包含 MyItem 类型的项目。我需要使用 sitecore 查询或 xpath 从 .net 代码中查询项目。 MyItem 具有 TreelistEx 类型的字段 MyField。我需要选择 MyField 包含“值”(其他项目的 guid)的所有项目。我该怎么做?
非常感谢
【问题讨论】:
标签: asp.net sitecore sitecore6
string query = string.Format("/sitecore/content/MyItems/*[contains(@MyField,'{0}')]", thevalue);
Item[] myItems = Sitecore.Context.Database.SelectItems(query);
我刚刚从我的网站中提取了这段代码,并为您的查询调整了名称。如果您有很多 MyItems,它的效率相当低,所以我不会在性能是关键的页面上使用它。相同的查询应该适用于任何列表类型的字段。
【讨论】:
虽然您不能在快速查询中使用函数,但您可以使用带通配符的类似 sql 的语法。看:
string query = string.Format("fast:/sitecore/content/MyItems/*[@MyField='%{0}%']", thevalue);
真实的故事。单词。
来源:“Using Sitecore Fast Query”的第 9 页,我认为它位于“帐户墙(tm)”的后面
不支持函数。但是 contains() 函数可以 替换为包含 SQL 通配符的字符串相等运算符。 例如: //[contains(@Title, 'Sitecore')] 等价于 fast://[@Title = '%Sitecore%']"
【讨论】:
您可能还想使用快速查询
string query = string.Format("fast:/sitecore/content/MyItems/*[contains(@MyField,'{0}')]", thevalue);
更新:sitecore 快速查询不支持函数,因此 contains() 函数在此查询中也不起作用。
【讨论】: