C# 无法从XElement获取xml节点

C# 无法从XElement获取xml节点,c#,xml,linq,xelement,C#,Xml,Linq,Xelement,我真的需要下面where子句的帮助 考虑一下这个xml <name xmlns="http://www.imsglobal.org/xsd/imslip_v1p0"> <partname> <typename> <tyvalue>First</tyvalue> </typename> <text>Charles</text> </partname>

我真的需要下面where子句的帮助

考虑一下这个xml

<name xmlns="http://www.imsglobal.org/xsd/imslip_v1p0">  
<partname>  
  <typename>  
    <tyvalue>First</tyvalue>  
  </typename>  
  <text>Charles</text>
</partname>  
<partname>  
   <typename>  
       <tyvalue>Last</tyvalue>  
    </typename>  
    <text>Ward</text>  
  </partname>  
</name>

第一
查尔斯
最后的
病房
此代码返回一个元素

List<XElement> xElements = xmlDocument.Descendants(Aw + "name").
Where(x => (x.Element(Aw + "partname").Element(Aw + "typename").Element(Aw + "tyvalue")).Value == "First").
Select(x => x.Element(Aw + "partname").Element(Aw + "text")).ToList();
List-xElements=xmlDocument.substands(Aw+“name”)。
其中(x=>(x.Element(Aw+“partname”).Element(Aw+“typename”).Element(Aw+“tyvalue”)).Value==“First”)。
选择(x=>x.Element(Aw+“partname”).Element(Aw+“text”)).ToList();
但是如果我将where子句改为“Last”,它将返回零个元素

List<XElement> xElements = xmlDocument.Descendants(Aw + "name").
Where(x => (x.Element(Aw + "partname").Element(Aw + "typename").Element(Aw + "tyvalue")).Value == "Last").
Select(x => x.Element(Aw + "partname").Element(Aw + "text")).ToList();
List-xElements=xmlDocument.substands(Aw+“name”)。
其中(x=>(x.Element(Aw+“partname”).Element(Aw+“typename”).Element(Aw+“tyvalue”)).Value==“Last”)。
选择(x=>x.Element(Aw+“partname”).Element(Aw+“text”)).ToList();
请帮忙。我真的卡住了

试试这个:

List<XElement> xElements = xmlDocument.Descendants(Aw + "name")
                .Descendants(Aw + "partname")
                .Descendants(Aw + "typename")
                .Descendants(Aw + "tyvalue")
                .Where(x => x.Value == "Last")
                .ToList();
List-xElements=xmlDocument.substands(Aw+“name”)
.子代(Aw+“零件名”)
.后代(Aw+“类型名称”)
.后代(Aw+“tyvalue”)
.其中(x=>x.值==“最后一次”)
.ToList();

x.Element返回第一个子元素;因为有很多元素,所以您需要使用“元素”而不是“元素”,您必须对其进行迭代。

谢谢您的回复。我在回家的路上坐地铁,但我周一早上第一件事就是试试。