2011-09-14 163 views
-1

我有一個帶有日期字段和時間字段的表。我想檢索按月份分組的結果集以及該月份內出現的記錄數。這怎麼可以在LINQ中完成? 就是這樣。Linq group by month

數據。

10/10/2011 00:00:10:000
10/11/2011 00:00:20:000
11/01/2011 00:00:10:000
11/10/2011 00:00:40:000

我想要檢索

2011年10月1日00:00:30:000
11/1/2011 00:00:50:000

Thank`s尋求幫助。

我嘗試這樣的事情。

var monthely = 
    from u in sqlDataContract.TimeTrickTables 
    group u by u.EntryDate.Value.Month into g 
    select new 
    { 
    EntryDate = g.Key, 
    ETime = g.Aggregate(TimeSpan.Zero, (subtotal, t) => subtotal.Add((TimeSpan)t.ETime)) 
    }; 

但它拋出此異常查詢操作「彙總」不支持

+0

自定義聚集不受LINQ2SQL支持。我的更新。 – Magnus

回答

5
from u in TimeTrickTables 
group u by u.EntryDate.Value.Month into g 
select new 
{ 
    Month = g.Key, 
    Count = g.Count(), //Nr. of records 
    Time = new TimeSpan(g.Sum(x => x.ETime.Ticks)) //Total time 
} 
+0

嘗試'新TimeSpan(g.Sum(x => x.ETime.Ticks))' – Magnus

+0

感謝'兄弟工作正常 – Vero009