Estoy tratando de definir una forma estándar de agrupar por año, por mes, por día, por hora, etc ...Entity Framework. Grupo SQL por al grupo EF Por
Al leer algunos documentos SQL parece la forma más eficiente sería utilizar:
GROUP BY dateadd(month, datediff(month, 0, CreatedDate), 0)
Nota el "mes", "año", ...
que luego trató de replicar esta usando:
.GroupBy(x => SqlFunctions.DateAdd("month", SqlFunctions.DateDiff("month", 0, x.Created), 0))
.GroupBy(x => EntityFunctions.AddMonths(EntityFunctions.DiffMonths(0, x.Created)))
Sin embargo, ambas expresiones no se pudieron compilar ...
¿Y no estoy seguro de si esta es la manera de hacerlo?
¿Cómo puedo replicar correctamente esa línea de código SQL en EF?
Sí, tengo que funcionar. Pero si no me equivoco al usar algo como lo publiqué, tiene un mejor rendimiento, ¿no? Estaba leyendo lo siguiente: http://weblogs.sqlteam.com/jeffs/archive/2007/09/10/group-by-month-sql.aspx ... –
Esta es la forma en que estaba tratando de encontrar una manera de Replicar ese código SQL usando EntityFunctions ... Y al mismo tiempo crear una forma estándar de agrupar por años, por meses, por días, por horas, ... Solo necesitaría cambiar AddYears por AddMonths, para ... –
No tiene ningún beneficio de rendimiento. La publicación a la que se ha vinculado solo indica que es más fácil trabajar con Sql. No veo que haya tanto beneficio haciéndolo de esa manera con Entity Framework. .NET no tiene las mismas limitaciones que Sql. – cadrell0