Entity framework 实体框架中的Group by,LINQ不适用于我

Entity framework 实体框架中的Group by,LINQ不适用于我,entity-framework,linq,Entity Framework,Linq,我有这个表DDL: CREATE TABLE [dbo].[Audit] ( [AuditId] INT IDENTITY (1, 1) NOT NULL, [Entity] INT NOT NULL, [UserId] INT NOT NULL, [Note] VARCHAR(200) NULL, [Date] DATETIME NOT NULL, [Action]

我有这个表DDL:

CREATE TABLE [dbo].[Audit] 
(
    [AuditId] INT          IDENTITY (1, 1) NOT NULL,
    [Entity]  INT          NOT NULL,
    [UserId]  INT          NOT NULL,
    [Note]    VARCHAR(200) NULL,
    [Date]    DATETIME     NOT NULL,
    [Action]  INT          NOT NULL,

    CONSTRAINT [PK_Audit] 
        PRIMARY KEY CLUSTERED ([AuditId] ASC)
);
我想做的是得到一份显示如下内容的报告:

UserId  Action  Count
---------------------    
user1   Insert  25
user1   Update  30
User1   Delete  45
User2   Insert  99
User2   Update  77
User2   Delete  77
我使用了这个LINQ,但不确定为什么它只给我一个用户而没有其他用户。我检查了数据,它是不同用户ID的混合体

Audits.GroupBy(a => a.Action)
        .Select(a => new { UserId = userId, Action = a.Key, Count = a.Count() })
        .ToList();
有人知道什么地方出了问题吗/

根据octavioccl提供的答案,我能够得出以下结论:

admin2  Insert  798
admin2  Update  640
admin1  Insert  123
admin3  Update  1403
admin2  Delete  11
admin1  Update  41

您需要按这两列进行分组:

Audits.GroupBy(a => new{a.UserId, a.Auction})
      .OrderBy(g=>g.Key.UserId).ThenBy(g=>g.Key.Auction)
      .Select(a => new { UserId = a.Key.UserId , Action = a.Key.Auction, Count = a.Count() })
      .ToList();

您需要按这两列进行分组:

Audits.GroupBy(a => new{a.UserId, a.Auction})
      .OrderBy(g=>g.Key.UserId).ThenBy(g=>g.Key.Auction)
      .Select(a => new { UserId = a.Key.UserId , Action = a.Key.Auction, Count = a.Count() })
      .ToList();

谢谢这几乎是我想要的,但是我看到user1和user2是混合的。我在问题的末尾添加了一个例子,这样你就可以看到它是什么样子了。有什么方法可以订购这些吗?@Anne:只需添加一个
OrderBy()
ThenBy()
,让它先按用户名订购,然后按操作订购。谢谢@StriplingWarrior的推荐谢谢。这几乎是我想要的,但是我看到user1和user2是混合的。我在问题的末尾添加了一个例子,这样你就可以看到它是什么样子了。有什么方法可以订购这些吗?@Anne:只需添加一个
OrderBy()
ThenBy()
,让它先按用户名订购,然后按操作订购。谢谢@StriplingWarrior的推荐