Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用LINQ查找包含多个集合的平均值的集合_C#_Linq - Fatal编程技术网

C# 使用LINQ查找包含多个集合的平均值的集合

C# 使用LINQ查找包含多个集合的平均值的集合,c#,linq,C#,Linq,LINQ:我有一个数组列表,我想得到一个包含每列平均值的集合。比如: var myCollection = new List<double[]>(); myCollection.Add(new []{1,2,3,4,5}); myCollection.Add(new []{3,4,5,6,7}); // Your answer --> {2,3,4,5,6} var myCollection=newlist(); 添加(新[{1,2,3,4,5}); 添加(新[{3,

LINQ:我有一个数组列表,我想得到一个包含每列平均值的集合。比如:

var myCollection = new List<double[]>();
myCollection.Add(new []{1,2,3,4,5});
myCollection.Add(new []{3,4,5,6,7});
// Your answer -->     {2,3,4,5,6}
var myCollection=newlist();
添加(新[{1,2,3,4,5});
添加(新[{3,4,5,6,7});
//你的答案-->{2,3,4,5,6}
像这样吗

var myCollection = new List<double[]>();
myCollection.Add(new double[]{1,2,3,4,5});
myCollection.Add(new double[]{3,4,5,6,7});

var qry = (from col in Enumerable.Range(0, myCollection.Min(arr => arr.Length))
           select myCollection.Average(arr => arr[col])).ToList();
或者,如果您只需要平均值(而不是anon类型):


由于您已经修改了问题,将二维数组更改为
列表
,另一种解决方案是:

var result = myCollection.Aggregate((arr1, arr2) => arr1.Zip(arr2, (x, y) => (x + y) / 2).ToArray())

锯齿状的还是实际上是二维的?“列”是哪个维度?更好的是,提供一个数组数据的代码示例。好的,编辑不是一个“二维数组”-它是一个数组列表。你是否假设行数是预先知道的?@Amittai:不,他不是。使用
GetLength(0)
GetLength(1)
是因为这是一个二维数组。我知道它应该很简单,但我不知道Range方法。看起来很有用,10倍:-)谢谢,但我使用的是3.5,它没有Zip操作符。
var qry = (from col in Enumerable.Range(0, data.GetLength(0))
           select Enumerable.Range(0, data.GetLength(1))
               .Select(row => data[col, row]).Average()).ToList();
var result = myCollection.Aggregate((arr1, arr2) => arr1.Zip(arr2, (x, y) => (x + y) / 2).ToArray())