.NET LINQ do grupy podmiotów według daty (dnia)

Mam tutaj ten sam problem:LINQ to Entities group-by failure przy użyciu .date

Jednak odpowiedź nie jest w 100% poprawna. Działa we wszystkich przypadkach, z wyjątkiem sytuacji, gdy używane są różne strefy czasowe. Gdy używane są różne strefy czasowe, grupuje się także w strefach czasowych. Czemu? Udało mi się to ominąć, używając wielu funkcji encji.

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

Czy jest ktoś, kto wie, jak to zrobić we właściwy sposób? Ten kod jest tak brzydki i prawdopodobnie bardzo nieefektywny.

AKTUALIZACJA (ostrzeżenie):
Zdałem sobie również sprawę, że funkcja EntityFunctions.CreateDateTime cierpi na błąd. Nie jest zgodny z latami przestępnymi, takimi jak w tym roku. 29 lutego 2012 rzuci wyjątek.

questionAnswers(1)

yourAnswerToTheQuestion