.NET LINQ a entidades agrupadas por fecha (día)

Tengo el mismo problema publicado aquí:LINQ al grupo de Entidades por fallo usando .date

Sin embargo, la respuesta no es 100% correcta. Funciona en todos los casos, excepto cuando se utilizan diferentes zonas horarias. Cuando se usan diferentes zonas horarias, también se agrupan en zonas horarias. ¿Por qué? Logré eludir esto usando muchas funciones de entidad.

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,
    ...
});

¿Hay alguien ahí fuera que sepa hacer esto de la manera correcta? Este código es tan feo y probablemente muy ineficiente.

ACTUALIZACIÓN (advertencia):
También me di cuenta de que la función EntityFunctions.CreateDateTime sufre de un error. No es compatible con años bisiestos, como este año. El 29 de febrero de 2012 lanzará una excepción.

Respuestas a la pregunta(1)

Su respuesta a la pregunta