在C#中对来自不同对象实例的数组进行优雅平均

Seg*_*ult 5 .net c# linq arrays list

我有一个相同类型的对象列表,每个对象都有一个浮点数组属性.将此列表作为输入,返回新数组的最简单方法是什么,该数组是列表中数组的平均值?

输入对象如下所示:

Class MyDatas
{
    float [] DataValues;
}

...

List<MyDatas> InputList;
float [] result;
Run Code Online (Sandbox Code Playgroud)

DataValues数组将保证具有相同的长度.结果数组的每个元素将是列表中每个成员的数组中相应元素的平均值.例如:result[0] = (InputList[0].DataValues[0] + InputList[1].DataValues[0] + ... ) / InputList.Count

当然,我可以用for循环中的foreach强制执行此操作,然后在此之后使用另一个for循环,但在我看来,这应该可以使用一行或两行LINQ.有什么建议?

dtb*_*dtb 5

float[] result = inputList.Select(c => c.DataValues)
                          .Transpose()
                          .Select(r => r.Average())
                          .ToArray();
Run Code Online (Sandbox Code Playgroud)

Transpose这里使用.