C#Linq XML查询,其中基于子节点值来自父节点的多个同名元素
我是一个新手,尝试基于以下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>
<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();您好,谢谢您的回复,在这里发布之前,我