C#Linq XML查询,其中基于子节点值来自父节点的多个同名元素

C#Linq XML查询,其中基于子节点值来自父节点的多个同名元素,c#,xml,linq,C#,Xml,Linq,我是一个新手,尝试基于以下xml检索文件节点的所有值 <Changes> <Change id="Rest"> <Name>Restructure</Name> <TIDE> <Files> <File>REGION</File> </Files> </TIDE> <Click>

我是一个新手,尝试基于以下xml检索文件节点的所有值

<Changes>
  <Change id="Rest">
    <Name>Restructure</Name>
    <TIDE>
      <Files>
        <File>REGION</File>
      </Files>
    </TIDE>
    <Click>
      <Files>
        <File>DISTRICT</File>
      </Files>
    </Click>
  </Change>
  <Change id="st">
    <Name>New ST</Name>
    <TIDE>
      <Files>
        <File>REGION</File>
      </Files>
    </TIDE>
    <Click>
      <Files>
        <File>DISTRICT</File>
      </Files>
    </Click>
  </Change>
</Changes>

此LINQ查询返回
Change
节点:

(from i in xmldoc.Root.Elements("Change")
 where (string)i.Element("Name").Value == listBox1.SelectedValue.ToString()
 select i)
。。。而
Change
节点没有直接的子节点
文件
。在这种情况下,您可以使用
子体()
而不是
元素()

var items = (from i in xmldoc.Root.Descendants("Change")
             where i.Element("Name").Value == listBox1.SelectedValue.ToString()
             select i).First().Descendants("File").ToList();

此LINQ查询返回
Change
节点:

(from i in xmldoc.Root.Elements("Change")
 where (string)i.Element("Name").Value == listBox1.SelectedValue.ToString()
 select i)
。。。而
Change
节点没有直接的子节点
文件
。在这种情况下,您可以使用
子体()
而不是
元素()

var items = (from i in xmldoc.Root.Descendants("Change")
             where i.Element("Name").Value == listBox1.SelectedValue.ToString()
             select i).First().Descendants("File").ToList();

此LINQ查询返回
Change
节点:

(from i in xmldoc.Root.Elements("Change")
 where (string)i.Element("Name").Value == listBox1.SelectedValue.ToString()
 select i)
。。。而
Change
节点没有直接的子节点
文件
。在这种情况下,您可以使用
子体()
而不是
元素()

var items = (from i in xmldoc.Root.Descendants("Change")
             where i.Element("Name").Value == listBox1.SelectedValue.ToString()
             select i).First().Descendants("File").ToList();

此LINQ查询返回
Change
节点:

(from i in xmldoc.Root.Elements("Change")
 where (string)i.Element("Name").Value == listBox1.SelectedValue.ToString()
 select i)
。。。而
Change
节点没有直接的子节点
文件
。在这种情况下,您可以使用
子体()
而不是
元素()

var items = (from i in xmldoc.Root.Descendants("Change")
             where i.Element("Name").Value == listBox1.SelectedValue.ToString()
             select i).First().Descendants("File").ToList();

您将遇到以下错误:

“序列不包含任何元素”

被第一个()方法调用抛出。First()要求至少列出一个结果,并且Where子句中的筛选器将删除所有结果(可能无法从列表框中正确获取名称)

我在我的机器上进行了测试,将listBox1.SelectedValue.ToString()替换为“Restructure”,错误不再发生


尽管没有抛出异常,但结果并不像您预期的那样,条目列表是空的。要解决另一个问题,您必须遵循har07响应,一切正常。

您将遇到以下错误:

“序列不包含任何元素”

被第一个()方法调用抛出。First()要求至少列出一个结果,并且Where子句中的筛选器将删除所有结果(可能无法从列表框中正确获取名称)

我在我的机器上进行了测试,将listBox1.SelectedValue.ToString()替换为“Restructure”,错误不再发生


尽管没有抛出异常,但结果并不像您预期的那样,条目列表是空的。要解决另一个问题,您必须遵循har07响应,一切正常。

您将遇到以下错误:

“序列不包含任何元素”

被第一个()方法调用抛出。First()要求至少列出一个结果,并且Where子句中的筛选器将删除所有结果(可能无法从列表框中正确获取名称)

我在我的机器上进行了测试,将listBox1.SelectedValue.ToString()替换为“Restructure”,错误不再发生


尽管没有抛出异常,但结果并不像您预期的那样,条目列表是空的。要解决另一个问题,您必须遵循har07响应,一切正常。

您将遇到以下错误:

“序列不包含任何元素”

被第一个()方法调用抛出。First()要求至少列出一个结果,并且Where子句中的筛选器将删除所有结果(可能无法从列表框中正确获取名称)

我在我的机器上进行了测试,将listBox1.SelectedValue.ToString()替换为“Restructure”,错误不再发生


尽管没有抛出异常,但结果并不像您预期的那样,条目列表是空的。要解决另一个问题,您必须遵循har07响应,一切正常。

您的listBox值在xml中具有相应的值?是的,listBox包含值-Restructure和New St,并且根据所选项目,我需要填充另一个listBox。您的listBox值在xml中具有相应的值?是,listbox包含值-Restructure和New St,并且基于所选项目,我需要填充另一个listbox。您的listbox值在xml中具有相应的值?是的,listbox包含值-Restructure和New St,并且基于所选项目,我需要填充另一个列表框。您的列表框值在xml中具有相应的值?是的,列表框包含值-Restructure和New St,并且根据所选的项目,我需要填充另一个列表框。您好,谢谢您的回复,在这里发布之前,我甚至尝试过使用后代,但它也不起作用。下面是代码XDocument xmldoc=XDocument.Load(“Change_Files_List.xml”);var items=(从xmldoc.Root.substands(“Change”)中的i开始,其中(string)i.Element(“Name”).Value==“Restructure”//listBox1.SelectedValue.ToString()选择i.First().Elements(“File”).ToList();var items=(从xmldoc.Root.substands(“Change”)中的i开始,其中(string)i.Element(“Name”).Value==“Restructure”//listBox1.SelectedValue.ToString()选择i.First().substands(“File”).ToList();您好,har07,谢谢您的回复,在这里发布之前,我甚至尝试过与后代,它也没有工作。下面是代码XDocument xmldoc=XDocument.Load(“Change_Files_List.xml”);var items=(从xmldoc.Root.substands(“Change”)中的i开始,其中(string)i.Element(“Name”).Value==“Restructure”//listBox1.SelectedValue.ToString()选择i.First().Elements(“File”).ToList();var items=(从xmldoc.Root.substands(“Change”)中的i开始,其中(string)i.Element(“Name”).Value==“Restructure”//listBox1.SelectedValue.ToString()选择i.First().substands(“File”).ToList();您好,谢谢您的回复,在这里发布之前,我