Entity Framework. SQL Group By в EF Group By - PullRequest
5 голосов
/ 29 марта 2012

Я пытаюсь определить стандартный способ группировки по годам, месяцам, дням, часам и т. Д. ...

При чтении некоторой документации по 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)))

Однако оба выраженияне удалось скомпилировать ...

И я не уверен, так ли это?

Как правильно реплицировать эту строку кода SQL в EF?

1 Ответ

5 голосов
/ 29 марта 2012

Я не понимаю, почему вы хотите использовать стандартный sql, чтобы сделать это любым способом, однако это можно легко сделать с помощью LINQ, и это будет более стандарт , группировка по анонимному типу для Пример как это:

.GroupBy( x => new 
               {
                  month = x.CreatedDate.Month,
                  year = x.CreatedDate.Year,
                  ...
               });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...