Select C# 的 Linq to XML 父元素的属性值

Select attribute value of parent element in Linq to XML of C#

我正在使用 C# 的 Linq to XML。我正在尝试使用 Xpath 找出父属性值。当我 运行 它反对 XML 时,这个 Xpath 工作但不知何故在 Linq 中给 XML 一个错误。

错误是:

Expression must evaluate to a node-set.

这里是 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;`

xpath 不能包含单个斜杠,并且您要向上一级。应该是

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