Entity framework 实体框架中的Group by,LINQ不适用于我
我有这个表DDL: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]
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的推荐