我在LINQ中编写查询时遇到了一些麻烦,无法从XML文件中获取所需的数据。
XML文件设置如下所示
<Study id ="">
<Multi>
<filepath id =""></filepath>
<filepath id ="display"></filepath>
<combined></combined>
</Multi>
</Study>
<Study id ="">
<Multi>
<filepath id =""></filepath>
<filepath id ="display"></filepath>
<combined></combined>
</Multi>
</Study>
我试图获取文件路径节点的值,其中id =&#34;显示&#34;
var displaySettingsQuery = (from n in _XML.Descendants("Study").Descendants("Multi")
where n.Element("Multi").Attribute("id").Value == "display"
select n.Element("filepath").Value);
这似乎不起作用,因为Element()方法只抓取&#34; Multi&#34;的第一个实例。但是,如果我使用Elements(),我会收到语法错误,因为Elements是一个Ienumerable,所以我无法直接调用属性。我将如何迭代&#34; Multi&#34;收集以便进行比较?
感谢您的帮助。
答案 0 :(得分:1)
如果您使from
子句返回<filepath>
元素而不是<Multi>
,这会更容易,因为您只关心<filepath>
中的where
和select
条款:
var displaySettingsQuery = (from n in _XML.Descendants("Study")
.Elements("Multi")
.Elements("filepath")
where n.Attribute("id").Value == "display"
select n.Value);