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

时间:2012-03-29 13:48:40

标签: c# linq entity-framework datetime group-by

我正在尝试定义按年,按月,按天,按小时等分组的标准方式......

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

GROUP BY dateadd(month, datediff(month, 0, CreatedDate), 0)

请注意“月”,“年”,......

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

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

.GroupBy(x => EntityFunctions.AddMonths(EntityFunctions.DiffMonths(0, x.Created)))

然而,两个表达式都无法编译......

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

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

1 个答案:

答案 0 :(得分:5)

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

.GroupBy( x => new 
               {
                  month = x.CreatedDate.Month,
                  year = x.CreatedDate.Year,
                  ...
               });