Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 我如何按行分组,每个分组中的每个人都有一个月的一天?_Sql Server_Entity Framework_Linq_Entity Framework 4 - Fatal编程技术网

Sql server 我如何按行分组,每个分组中的每个人都有一个月的一天?

Sql server 我如何按行分组,每个分组中的每个人都有一个月的一天?,sql-server,entity-framework,linq,entity-framework-4,Sql Server,Entity Framework,Linq,Entity Framework 4,我有这个表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)
);
我想做的是得到一个报告,其中显示了一个用户ID和一个组每天的活动(行)计数

这是否可能与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模型看起来像表,您可以使用以下LINQ语句:

from a in context.Audits
group a by EntityFunctions.TruncateTime(a.Date) into grp
select new
{
    Date = grp.Key,
    Count = grp.Count()
}

由于标记了EntityFramework4,因此必须使用
EntityFunctions
。在以后的版本中,这已更改为
DbFunctions

谢谢。如果我想按日期降序排列,我可以在group by a.date语句后放置orderby吗?我签出了这个,但它不能正确地按日期分组,因为有数千个不同的日期(不是整个日期)。我认为,不知何故,组员也必须使用转换后的日期。