2011-02-07 133 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