请考虑这个简单的课程
public class SEANCE
{
int ID_SEANCE {get;set;}
DateTime SEA_DATE {get;set;}
}
适用于健身管理应用程序,SEANCE类是成员的会话表。
这是我的起始查询,用于显示按日时分组的会话数
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();
如您所见,它返回按小时分组的会话总数。 我想要的是平均会话数按天和按小时分组,这就是我有点迷失的地方:p
例如在18,1500对应于那时的会话总数。
我想要的是每天的平均数
希望现在有意义:))
答案 0 :(得分: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));