2017-03-18 128 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