【发布时间】:2018-05-12 11:15:20
【问题描述】:
我有一个具有这种结构的 XML:
<weatherdata>
<datapoint>
<location>London</location>
<rainfall>14</rainfall>
</datapoint>
......
</weatherdata>
我想将按位置分组的平均降雨量保存到数据点对象列表中。 Datapoint 对象具有 Location 和 AvgRainfall 属性。
List<Datapoint> datapointList = new List<Datapoint>();
var q = xdoc.Element("weatherdata").Elements("datapoint")
.GroupBy(e => e.Element("location").Value);
IEnumerable<Datapoint> d = xdoc.Element("weatherdata").Elements("datapoint")
.GroupBy(e => e.Element("location").Value)
.Select(x => new Datapoint
{
RegionName = x.Key,
AvgRainfall = x.Select(e => e.Elements("rainfall")
.Average(f => double.Parse(f.Value)))
});
问题是,AvgRainfall 属性是双精度的,但 x.Select 返回一个 IEnumerable - 双精度列表。 请指出正确的方向。
编辑:这个解决方案对我的问题很有效:
AvgRainfall = x.Elements("rainfall").Average(f => double.Parse(f.Value))
【问题讨论】:
标签: c# group-by linq-to-xml average