.NET LINQ para o grupo de entidades por data (dia)

Eu tenho o mesmo problema postado aqui:LINQ to Entities falha por grupo usando .date

No entanto, a resposta não está 100% correta. Ele funciona em todos os casos, exceto quando diferentes fusos horários são usados. Quando diferentes fusos horários são usados, também se agrupa em fusos horários. Por quê? Consegui ignorar isso usando muitas funções da entidade.

int localOffset= Convert.ToInt32(
    TimeZone.CurrentTimeZone.GetUtcOffset(DateTime.Now).TotalMinutes);

var results = (
    from perfEntry in db.entry
    where (....)
    select new { 
        perfEntry.Operation, perfEntry.Duration, 
        localTime = EntityFunctions.AddMinutes(perfEntry.Start, 
            localOffset - EntityFunctions.GetTotalOffsetMinutes(
                perfEntry.Start)) 
    }
).GroupBy(x => new { 
    Time = EntityFunctions.TruncateTime(
        EntityFunctions.CreateDateTime(x.localTime.Value.Year,
            x.localTime.Value.Month, x.localTime.Value.Day, 0, 0, 0)),
    x.Operation }
).OrderByDescending(a => a.Key).
Select(g => new {
    Time = g.Key.Time,
    ...
});

Existe alguém lá fora que sabe como fazer isso da maneira correta? Este código é tão feio e provavelmente muito ineficiente.

ATUALIZAÇÃO (aviso):
Eu também percebi que a função EntityFunctions.CreateDateTime sofre de um bug. Não é compatível com anos bissextos, como este ano. 29 de fevereiro de 2012 lançará uma exceção.