C# 需要帮助Linq查询组由+;计数

C# 需要帮助Linq查询组由+;计数,c#,linq,C#,Linq,我有下表和ActivityLog的记录: ID, UserId, Category, Created 1 11 DeAssigned 05/10/2012 2 11 LogIn 05/11/2012 3 20 Assigned 06/15/2012 4 11 Assigned 06/10/2012 5 20 DeAssigned 06/

我有下表和ActivityLog的记录:

ID, UserId,      Category,   Created
1       11     DeAssigned    05/10/2012
2       11          LogIn    05/11/2012
3       20       Assigned    06/15/2012
4       11       Assigned    06/10/2012
5       20     DeAssigned    06/13/2012
6       20       Assigned    07/12/2012
7       11     DeAssigned    07/16/2012
8       20       Assigned    08/15/2012
...
现在我想查询表以创建相同的结构和相同的结果,如下所示:

我所取得的成就:

var result = (from l in repoA.GetAll()
                      where   l.Created >= System.DateTime.Now.AddYears(-1)
                      group l by new { l.Created.Value.Month, l.Category }
                      into groups
                      orderby  groups.Key.Month 
                      select new
                                 {
                                     Month = groups.Key.Month,
                                     Category = groups.Key.Category,
                                     Count = groups.Count()
                                 });
没有最佳结果,但按月统计分组的所有活动:

 [0] {Month = 6, Category = Assigned, Count = 2}
 [0] {Month = 6, Category = Designed, Count = 1}
 [0] {Month = 6, Category = LogIn, Count = 1}
 [0] {Month = 7, Category = Assigned, Count = 3}
如何查询表格以将结果格式化为“水平计数”格式?

或更简单:

var result = (from l in repoA.GetAll()
                           where   l.Created >= System.DateTime.Now.AddYears(-1) 
                           group l by l.Created.Month into groups
                           orderby groups.Key ascending
                           select new
                              {
                                  Month = groups.Key,
                                  Assigned = groups.Where(g => g.Category == "Assigned").Count(),
                                  Deassigned = groups.Where(g => g.Category == "DeAssigned").Count(),
                                  LogIn = groups.Where(g => g.Category == "LogIn").Count()
                              });
var result = (from l in repoA.GetAll()
                           where   l.Created >= System.DateTime.Now.AddYears(-1) 
                           group l by l.Created.Month into groups
                           orderby groups.Key ascending
                           select new
                              {
                                  Month = groups.Key,
                                  Assigned = groups.Where(g => g.Category == "Assigned").Count(),
                                  Deassigned = groups.Where(g => g.Category == "DeAssigned").Count(),
                                  LogIn = groups.Where(g => g.Category == "LogIn").Count()
                              });