我已将您的查询更改为:
var query = from user in main.Root.Descendants("country")
where user.Elements("state").Any() && user.Elements("state").First().Value == st
select user;
请注意,我取了 Root 元素的后代并检查国家/地区是否存在 state 元素,然后使用给定值检查 state 值。如果找到匹配,将选择国家元素。
而且这将返回 XMleelements,您不能直接将它们绑定到DataSource
,从该查询中您可以选择国家名称和其他内容,最后将其转换为列表或数组。上面的结果可以直接绑定到 DropDownList
这是示例 xml:
<?xml version="1.0" encoding="utf-8" ?>
<countries>
<country>Test1</country>
<country name ="A">
<state>Test2</state>
</country>
<country name ="B">
<state>Test2</state>
</country>
<country name ="C">
<state>Test3</state>
</country>
</countries>
加载xml
XDocument main = XDocument.Load("input.xml");
从国家元素属性中获取国家名称
var countryNames = (from user in main.Root.Descendants("country")
where user.Elements("state").Any() && user.Elements("state").First().Value == "Test2"
select user.Attribute("name").Value).ToList();
编辑:
你的 XML:
<country>
<name>India</name>
<state>
<text>Maharashtra</text>
<text>Kashmir</text>
<text>Goa</text>
</state>
</country>
更新代码:
var countryNames = (from user in main.Descendants("country")
where user.Elements("state").Descendants("text").Any(s => s.Value == st)
select user.Element("name").Value).ToList();