我正在尝试定义按年,按月,按天,按小时等分组的标准方式......
通过阅读一些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代码行?
答案 0 :(得分:5)
我不明白你为什么要使用标准的sql来做任何方式,但是这可以使用LINQ轻松完成,它将更多标准,按匿名类型分组例如:
.GroupBy( x => new
{
month = x.CreatedDate.Month,
year = x.CreatedDate.Year,
...
});