C# 选择C的Linq to XML中父元素的属性值#

C# 选择C的Linq to XML中父元素的属性值#,c#,linq-to-xml,C#,Linq To Xml,我正在使用C#的Linq到XML。我正在尝试使用Xpath查找父属性值。当我针对XML运行Xpath时,它可以工作,但不知何故在LINQtoXML中出现了一个错误 错误是: 表达式必须计算为节点集 下面是XML: <items> <item id="Carrier_ProductBase_Data_3_0_0_0" description="Carrier ProductBase Data (3.0.0.0)" versionDate="2006-12-01"&g

我正在使用C#的Linq到XML。我正在尝试使用Xpath查找父属性值。当我针对XML运行Xpath时,它可以工作,但不知何故在LINQtoXML中出现了一个错误

错误是:

表达式必须计算为节点集

下面是XML:

<items>
   <item id="Carrier_ProductBase_Data_3_0_0_0" description="Carrier  ProductBase  Data   (3.0.0.0)" versionDate="2006-12-01">
        <keys>
            <key name="versionID" value="Carrier_ProductBaseData_00_10"/>
                    <key name="family" value="DCTTemplates"/>
                    <key name="lob" value="CarrierAdmin"/>
                    <key name="state" value="Admin"/>
                    <key name="version" value="3.0.0.0"/>
                    <key name="effectiveDateNew" value="2006-12-01"/>
                    <key name="effectiveDateRenewal" value="2006-12-01"/>
                <key name="masterID" value="DuckCreekTech_Master_US_00_20"/>
                    <key name="productCode" value="Data"/>
                </keys>
            </item> </items>


`XDocument xdoc = XDocument.Parse(this.DCTResponseXML);
var s = xdoc.XPathSelectElement("//*[@name='productCode'][@value='Data']/../../").Attribute("id").Value;`

`XDocument xdoc=XDocument.Parse(this.DCTResponseXML);
var s=xdoc.XPathSelectElement(“/*[@name='productCode'][@value='Data']/../../”).Attribute(“id”).value`

xpath不能包含一个斜杠,而且您将向上提升一个级别。应该是

var xpath = @"//*[@name='productCode'][@value='Data']//..//..";
var s = xdoc.XPathSelectElement(xpath). ...

有人能帮我吗?我把它改成了var s=xdoc.XPathSelectElement(“/*[@name='productCode'][@value='Data']//../..//”).Attribute(“id”).value;同样的错误。