2011-02-14 90 views
0

我有一個int []數組= {34,65,3,65,3,2,68,8,4,2}。我想把這個數組分成5個組,並找到每個子組的平均值。爲匿名提供一個名稱,稍後在LINQ中調用

+0

做什麼的代碼看起來像其他人呢? – 2011-02-14 11:25:31

+0

那麼給g.Avg()一個名字之前的行,所以var avrg = g.Avg();從xyz在new [] {Avrg}中選擇xyz; – Joe 2011-02-14 11:27:01

回答

3

這句法聲明(隱含)由Avg()方法的返回類型的數組:

new [] { Avrg = g.Avg() } // if g.Avg() returns int, it will be int[] 

,如果你想聲明匿名類型的數組,你必須做到:

new[] { new { Avrg = g.Avg() } } 

編輯:

根據你的編輯,這段代碼將數組分成5個元素和comp他們的平均值如下:

int[] array = { 34, 65, 3, 65, 3, 2, 68, 8, 4, 2 }; 

var avgGroups = from x in Enumerable.Range(0, array.Length) 
       group x by (x/5) into g 
       select new { Avrg = g.Average(x => array[x]) }; 
0

你不需要給它一個名字;要創建的對象的類型

IEnumerable<typeof(g.Avg)> 

,所以你可以通過該對象枚舉得到g.Avg的值()。

0

可能你想要在數組中存儲類型。爲此,您需要有這樣的

var v = from xyz in new [] { new {Avg = g.Avg()} } 
       select xyz; 

而是用這種方式,

var v = from xyz in new [] { g.Avg() } 
       select new {Avg = xyz};