【发布时间】:2012-02-29 09:51:00
【问题描述】:
我有一个 XML 文档,其中包含一系列如下所示的项目节点:
<data>
<item>
<label>XYZ</label>
<description>lorem ipsum</description>
<parameter type="id">123</parameter>
<parameter type="name">Adam Savage</parameter>
<parameter type="zip">90210</parameter>
</item>
</data>
我想将其 LINQ 转换成这样的匿名类型:
var mydata =
(from root in document.Root.Elements("item")
select new {
label = (string)root.Element("label"),
description = (string)root.Element("description"),
id = ...,
name = ...,
zip = ...
});
根据“type”属性的值提取每个参数类型的最佳方法是什么?由于有许多参数元素,您最终会得到 root.Elements("parameter") 这是一个集合。我能想到的最好方法是通过下面的方法,但我觉得必须有更好的方法?
(from c in root.Descendants("parameter") where (string)c.Attribute("type") == "id"
select c.Value).SingleOrDefault()
【问题讨论】: