实体框架.SQL Group By到EF Group By

Mig*_*ura 5 c# linq datetime entity-framework group-by

我试图定义一种按年,按月,按天,按小时等分组的标准方法...

通过阅读一些SQL文档,似乎最有效的方法是使用:

GROUP BY dateadd(month, datediff(month, 0, CreatedDate), 0)
Run Code Online (Sandbox Code Playgroud)

注意"月","年",......

然后我尝试使用以下方法复制:

.GroupBy(x => SqlFunctions.DateAdd("month", SqlFunctions.DateDiff("month", 0, x.Created), 0))

.GroupBy(x => EntityFunctions.AddMonths(EntityFunctions.DiffMonths(0, x.Created)))
Run Code Online (Sandbox Code Playgroud)

但是,两个表达式都无法编译......

我不确定这是不是这样做的?

如何在EF中正确复制该SQL代码行?

Mah*_*mal 5

我不明白你为什么要使用标准的sql来做任何方式,但这可以使用LINQ轻松完成,它会更标准,按匿名类型分组,例如:

.GroupBy( x => new 
               {
                  month = x.CreatedDate.Month,
                  year = x.CreatedDate.Year,
                  ...
               });
Run Code Online (Sandbox Code Playgroud)

  • 它没有任何性能优势.您链接的帖子只是表明它可以更容易地在Sql中使用.我没有看到使用Entity Framework以这种方式做到这么多的好处..NET与Sql没有相同的限制. (2认同)