C# 使用GroupBy平均整数数组元素

C# 使用GroupBy平均整数数组元素,c#,linq,C#,Linq,我有这样一个项目列表: 其中列表中的每个元素都遵循相同的结构。每个Y属性都是一个具有3个值的int[] 然后我在此列表上执行一个GroupBy,将数据分成60秒的时段: var newChart = chart.GroupBy(x => x.DateAdded.RoundUp(TimeSpan.FromSeconds(60))); RoundUp是我从这里得到的一种扩展方法: 这将创建一个类似这样的列表,其中的值按分钟分组,这是我所期望的: 例如,分钟20:18有5个条目,该值可能会

我有这样一个项目列表:

其中列表中的每个元素都遵循相同的结构。每个
Y
属性都是一个具有3个值的
int[]

然后我在此列表上执行一个
GroupBy
,将数据分成60秒的时段:

var newChart = chart.GroupBy(x => x.DateAdded.RoundUp(TimeSpan.FromSeconds(60)));
RoundUp
是我从这里得到的一种扩展方法:

这将创建一个类似这样的列表,其中的值按分钟分组,这是我所期望的:

例如,分钟
20:18
有5个条目,该值可能会改变,有时可能是6个条目,有时是1个条目,以此类推

因此,我的问题是,如何将这个新的分组依据列表转换为原始列表的类型,其中
Y
值具有分组依据中这些条目的平均值。我尝试了以下操作,但
Y
值包含3个以上的条目:

var newChart = chart.GroupBy(x => x.DateAdded.RoundUp(TimeSpan.FromSeconds(60)))
.Select(x => new ChartPoint
{
    DateAdded = x.Key,
    X = x.Key.ToString(@"HH:mm:ss"),
    Y = x.Select(y => (int)Math.Round(y.Y.Average(z => z), 0, MidpointRounding.AwayFromZero)).ToArray()
});


例如,如果位于
20:18
的条目只有2个条目,条目1的Y值为:
3,4,5
,条目2的值为:
5,10,11
。然后,我希望这个新列表中
Y
20:18
条目如下:
4,7,8
,因为:
(3+5)/2=4
(4+10)/2=7
(5+11)/2=8
,而不是获取组中每个数组的平均值,设置数组长度的范围,并从每个数组中获取相应项的平均值:

var newChart = chart.GroupBy(x => x.DateAdded.RoundUp(TimeSpan.FromSeconds(60)))
.Select(x => new ChartPoint
{
    DateAdded = x.Key,
    X = x.Key.ToString(@"HH:mm:ss"),
    Y = Enumerable.Range(0, 3).Select(i => (int)Math.Round(x.Average(z => z.Y[i]))).ToArray()
});