【问题标题】:Sitecore: select items by field: TreelistExSitecore:按字段选择项目:TreelistEx
【发布时间】:2023-03-05 02:41:01
【问题描述】:

我有一个名为 MyItems 的 Sitecore 文件夹,其中包含 MyItem 类型的项目。我需要使用 sitecore 查询或 xpath 从 .net 代码中查询项目。 MyItem 具有 TreelistEx 类型的字段 MyField。我需要选择 MyField 包含“值”(其他项目的 guid)的所有项目。我该怎么做?

非常感谢

【问题讨论】:

    标签: asp.net sitecore sitecore6


    【解决方案1】:
    string query = string.Format("/sitecore/content/MyItems/*[contains(@MyField,'{0}')]", thevalue);
    Item[] myItems = Sitecore.Context.Database.SelectItems(query);
    

    我刚刚从我的网站中提取了这段代码,并为您的查询调整了名称。如果您有很多 MyItems,它的效率相当低,所以我不会在性能是关键的页面上使用它。相同的查询应该适用于任何列表类型的字段。

    【讨论】:

    • 我把 guid 放在那里: /sitecore/content/MyItems/*[contains(@MyField,'{33A77F25-8327-46B4-96FE-6652B8E40BD1}')] 并且它什么都不返回(带有该指南存在)。您认为哪种方式更有效:快速查询还是其他方式?谢谢
    【解决方案2】:

    虽然您不能在快速查询中使用函数,但您可以使用带通配符的类似 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%']"

    【讨论】:

      【解决方案3】:

      您可能还想使用快速查询

      string query = string.Format("fast:/sitecore/content/MyItems/*[contains(@MyField,'{0}')]", thevalue);
      

      更新:sitecore 快速查询不支持函数,因此 contains() 函数在此查询中也不起作用。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-11-18
        • 2012-08-18
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多