我有一个有点奇怪的场景,无法理解:
我有一个外部列表,其中包含多个内部列表。
每个内部列表包含多个DataPoint对象。
每个内部列表包含相同数量的DataPoint对象。
DataPoint具有名为Value的字段,它是一个double类型 - 例如:
- Outerlist
- Innerlist
- DataPoint(value=2)
- DataPoint(value=2)
- Innerlist
- DataPoint(value=4)
- DataPoint(value=5)
- Innerlist
- DataPoint(value=3)
- DataPoint(value=5)
- Innerlist
所以我的想法是将内部列表“合并”成一个列表,其中每个DataPoint的值应该是旧值的平均值,基于其在列表中的索引 - 在这种情况下:
- List
- DataPoint(3) - ((2+4+3)/3) = 3
- DataPoint(4) - ((2+5+5)/3) = 4
是否有任何漂亮的Linq表达式可以执行此类操作(我打赌有:))?
我最终使用了以下解决方案:
var averages = Enumerable.Range(0, outer.First().Count()).Select(i => new DataPoint(outer.Select(l => l[i]).Average(x=>x.Value)));
它输出IEnumerable,现在具有平均值 - 耶!