我有这个表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的活动计数(行)。
这是否可以与LINQ一起使用,或者我需要在SQL中使用编码,因为需要以某种方式从DATETIME字段中提取日期。
即使对SQL SELECT非常感激,也可以提供一些帮助和建议。
Date Count
---------------------
29-Feb-2018 25
28-Feb-2018 33
27-Feb-2018 11
26-Feb-2018 44
答案 0 :(得分:1)
您应该避免使用关键字作为列或对象名称,因为它会使事情变得非常混乱。但是使用你的例子,这是一个非常简单的查询。
select [Date] = convert(date, a.Date)
, [Count] = count(*)
from Audit a
group by convert(date, a.Date)
答案 1 :(得分:0)
假设您的EF模型看起来像表,您可以使用此LINQ语句:
from a in context.Audits
group a by EntityFunctions.TruncateTime(a.Date) into grp
select new
{
Date = grp.Key,
Count = grp.Count()
}
由于您标记了实体框架4,因此您必须使用EntityFunctions
。在以后的版本中,这已更改为DbFunctions
。