使用linq,根据xml子节点的某些属性值,对子节点进行属性划分
本文关键字:属性 子节点 划分 根据 linq xml 使用 | 更新日期: 2023-09-27 18:19:35
我有一个下拉列表,其中包含时间节点的属性值。我想根据父属性的值选择子-子节点属性
xml如下
<info>
<time value="0-30">
<id t_id="1" speaker="Rajesh " desc="welcome" />
<id t_id="2" speaker="Deepak " desc="to the meeting" />
</time>
<time value="31-50">
<id t_id="1" speaker="Vishal" desc="welcome" />
<id t_id="2" speaker="Vikas" desc="to the meeting" />
</time>
</info>
当我在下拉列表中选择0-30时,Rajesh和Deepak必须显示
我正在尝试使用linq
请帮我
选择匹配的时间元素,然后展平子代id元素
XDocument xdoc = XDocument.Load(path_to_xml);
var speakers = xdoc.Descendants("time")
.Where(t => (string)t.Attribute("value") == "0-30")
.SelectMany(t => t.Descendants("id"))
.Select(id => (string)id.Attribute("speaker"));
查询语法
var speakers = from t in xdoc.Descendants("time")
where (string)t.Attribute("value") == "0-30"
from id in t.Descendants("id")
select (string)id.Attribute("speaker");
XPath
var speakers = from id in xdoc.XPathSelectElements("//time[@value='0-30']/id")
select (string)id.Attribute("speaker");