2017-03-18 94 views
0

请考虑这个简单的类LINQ平均

public class SEANCE 
{ 
    int ID_SEANCE {get;set;} 
    DateTime SEA_DATE {get;set;} 
} 

这对健身管理应用程序,该降神类是成员的会话表。

这里是我开始查询,以显示白天小时

var lst = ctx.SEANCES 
.GroupBy(o => o.SEA_DATE.Hour) 
.Select(g => new ChartData() 
{ 
    DT = new DateTime(2017, 01, 01, g.Key, 0, 0), 
    VALUE = g.Count() 
}); 


return lst.OrderBy(a => a.DT).ToList(); 

分组会议的数量,你可以看到,它返回由时段分组会议的总数。 我想的却是按小时分组会议通过天和的平均数,而这也正是我有点迷失:对

这里我的意思 enter image description here

例如在18 ,1500对应于当时的会话总数。

我想要什么,而不是通过一天的平均数量

希望让现在感觉:)

回答

0

ctx.SEANCES.Count()/lst.Count(),但是,似乎是数据库源,以便更好地使用结果:

var groups = ctx.SEANCES 
       .GroupBy(s => s.SEA_DATE.Hour) 
       .OrderBy(g => g.Key) 
       .Select(g => new ChartData() 
       { 
        DT = g.First().SEA_DATE, 
        VALUE = g.Count() 
       }) 
       .ToList(); 

var averageByHour = groups.Average(c => c.VALUE); 

var averageByDay = groups.GroupBy(s => s.DT.Day).Average(g => g.Sum(c => c.VALUE)); 
+0

对不起,但我认为我点击提交按钮太快:)我想要的是按天平均计数和按小时分组 – user2475096

+0

我编辑了原始问题以及 – user2475096

+0

@ user2475096我无法测试它,并没有' Ť足够的信息以获得良好的答案,但您可以尝试更新的答案并从那里开始 – Slai