C# Sitecore查询如何选择具有特定父id的项目

C# Sitecore查询如何选择具有特定父id的项目,c#,sitecore,sitecore8,C#,Sitecore,Sitecore8,我想选择父项id=xx的项目 我正在使用此查询: var mainSectionItem = Sitecore.Context.Item.Axes.SelectSingleItem("./ancestor::*[@@parentid = '{E3C35E4C-B3D9-4153-B53E-E4004E76D768}']"); 但我得到空值。在上面的代码中,当我将@@parentid更改为@@id时,我得到main项。为了澄清这一点,我正在做: MainItem[id

我想选择父项id=xx的项目

我正在使用此查询:

 var mainSectionItem =
            Sitecore.Context.Item.Axes.SelectSingleItem("./ancestor::*[@@parentid = '{E3C35E4C-B3D9-4153-B53E-E4004E76D768}']");
但我得到空值。在上面的代码中,当我将
@@parentid
更改为
@@id
时,我得到main项。为了澄清这一点,我正在做:

  • MainItem[id={E3C35E4C-B3D9-4153-B53E-E4004E76D768}]
    • A
      • A1
      • A2
    • B
      • B1
      • B2

从A1或A2中,我想得到A,如果上下文项是B1或B2,我想得到B。这只是一个示例,树可以更深一些。

我不记得正确的Xpath语法,但可能类似于:

“/../../../../../[@id='{E3C35E4C-B3D9-4153-B53E-E4004E76D768}']”


/。/正如Gatogordo在评论中所说的,Sitecore查询语言对于
@@parentid
没有特殊属性。您可以使用
parent::
作为轴,但与XPath相比,它的行为异常,因此我倾向于避免使用它

匹配我知道的项目核心属性的有效选项有:

“查找适当的父项”最常见的模式可能是根据其模板查找正确的项。通过模板查找内容使代码更加灵活-如果特定项目被销毁和重新创建(这将更改其ID),并且如果使用相同的模板创建新内容,代码将继续工作


您的查询可能类似于
祖先::*[@@templateid='{template-guid-for-A-here}'或@templateid='{template-guid-for-B-here}']
——尽管这假设A和B有不同的模板。如果它们都有相同的模板,则可以删除第二个
@@templateid
子句。(或者,如果愿意,也可以在此处使用
@@templatename
)如果希望查询处理A&B项以及Ax&Bx,也可以在此处使用
祖先或self::
轴。

@@parentid不是有效的属性。。您不能使用templatename(或id)吗?
[./../..] - A1/A/MainItem[Who has X as ID]