c# - 使用 groupBy 将数据从 Linq-to-XML 保存到对象列表
问题描述
我有一个具有这种结构的 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))
解决方案
尝试这个:
AvgRainfall = x.SelectMany(e => e.Elements("rainfall").Select(f => f.value))
.Average(g => double.Parse(g))
SelectMany
从多个集合返回特定元素的列表。
推荐阅读
- r - 将时间序列分解为 R 中多个组的趋势、季节性和随机,以获取月度数据
- java - Java检查开始日期和结束日期是否在间隔内
- javascript - 将包装器添加到元素,然后读取 offsetTop 会返回错误的结果
- python - 如何在 Python 中最好地展平 NDJson 数据
- deployment - 谷歌云计算引擎无法部署
- maven - 是否应该在子 pom 或父 pom 中处理排除项?
- java - 如何在Java中循环遍历图像时设置自定义RGB值
- javascript - 获取未定义而不是字符串
- unity3d - 导出到 Unity 时将纹理保留在搅拌机文件中
- java - 类中定义的枚举是静态嵌套类吗?