2011-02-07 128 views
0

我試圖得到分組後的一些數字的平均值,但它不會爲我分組。爲什麼這不是我認爲應該做的?Linq多列分組和平均

var eventInfo = from eventData in dt.AsEnumerable() 
    group eventData by new 
     { 
      Phase1Minutes = eventData.Field<decimal>("Phase1Minutes"), 
      Phase2Minutes = eventData.Field<decimal>("Phase2Minutes"), 
      TechnologyType = eventData.Field<string>("TechnologyType"), 
      TechnologySubType = eventData.Field<string>("TechnologySubType") 
     } into g 
    select new 
    { 
     Phase1Avg = g.Average(x => x.Field<decimal>("Phase1Minutes")), 
     Phase2Avg = g.Average(x => x.Field<decimal>("Phase2Minutes")), 
     g.Key.TechnologyType, 
     g.Key.TechnologySubType 
    }; 

回答

0

根據你已經分組的內容進行平均是沒有意義的。只是舉一個微不足道的例子,想象一下按年齡分組人羣,然後找出每個組中的平均年齡......他們都是同一個年齡段!

我的猜測是,你只需要取出分組的部分分:

var eventInfo = from eventData in dt.AsEnumerable() 
    group eventData by new 
     { 
      TechnologyType = eventData.Field<string>("TechnologyType"), 
      TechnologySubType = eventData.Field<string>("TechnologySubType") 
     } into g 
    select new 
    { 
     Phase1Avg = g.Average(x => x.Field<decimal>("Phase1Minutes")), 
     Phase2Avg = g.Average(x => x.Field<decimal>("Phase2Minutes")), 
     g.Key.TechnologyType, 
     g.Key.TechnologySubType 
    }; 
+0

黨吧!當然。我一直在看這個有點太長。謝謝。 – Homer 2011-02-07 22:31:31