Linq group by date when using multiple group by fields

c#, entity-framework, linq, sql

Solution

Sure you can use a method in an anonymous type, but you have to supply the name of the property, because the compiler doesn't have anything to derive it from:

kw.GroupBy(x => new { 
                      Date = DbFunctions.TruncateTime(g.SummaryHour),
                      x.KeywordID
                    })

Problem

Since linq does not allow you to use the Date() method inside a linq query, I read about using DbFunctions.TruncateTime, which works fine until you try using it inside an anonymous type which is what I need to do in order to group on multiple fields. I also tried creating a new datetime using just the date portion of my field but this doesn't work either (again with the same error). My query looks like ``` kw = kw .GroupBy(x => new { DbFunctions.TruncateTime(g.SummaryHour), x.KeywordID }) .SelectMany(x => x) .OrderByDescending(x => x.KeywordID); ``` I tried chaining the group by's together like groupby.groupby... but this doesn't give me the same result. Any way I can achieve this? I'm basically trying to filter out the time portion of my date and group by other fields as well.

Original source

Related problems