我怎样才能对组中的每一行进行分组?
How can I do a group by on rows with a day of month for each in the group?
我有这个 table 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 每天的 activity(行)计数。
这是否可以用 LINQ 来处理,或者我是否需要求助于 SQL 中的编码,因为需要以某种方式从 DATETIME 字段中提取日期。
一些帮助和建议,即使 SQL SELECT 将不胜感激。
Date Count
---------------------
29-Feb-2018 25
28-Feb-2018 33
27-Feb-2018 11
26-Feb-2018 44
您应该避免使用关键字作为列名或对象名,因为这会使事情变得非常混乱。但是使用您的示例,这是一个非常简单的查询。
select [Date] = convert(date, a.Date)
, [Count] = count(*)
from Audit a
group by convert(date, a.Date)
假设您的 EF 模型看起来像 table,您可以使用此 LINQ 语句:
from a in context.Audits
group a by EntityFunctions.TruncateTime(a.Date) into grp
select new
{
Date = grp.Key,
Count = grp.Count()
}
由于您标记了 entity framework 4,因此您必须使用 EntityFunctions
。这在后来的版本中更改为 DbFunctions
。
我有这个 table 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 每天的 activity(行)计数。
这是否可以用 LINQ 来处理,或者我是否需要求助于 SQL 中的编码,因为需要以某种方式从 DATETIME 字段中提取日期。
一些帮助和建议,即使 SQL SELECT 将不胜感激。
Date Count
---------------------
29-Feb-2018 25
28-Feb-2018 33
27-Feb-2018 11
26-Feb-2018 44
您应该避免使用关键字作为列名或对象名,因为这会使事情变得非常混乱。但是使用您的示例,这是一个非常简单的查询。
select [Date] = convert(date, a.Date)
, [Count] = count(*)
from Audit a
group by convert(date, a.Date)
假设您的 EF 模型看起来像 table,您可以使用此 LINQ 语句:
from a in context.Audits
group a by EntityFunctions.TruncateTime(a.Date) into grp
select new
{
Date = grp.Key,
Count = grp.Count()
}
由于您标记了 entity framework 4,因此您必须使用 EntityFunctions
。这在后来的版本中更改为 DbFunctions
。