Agrupar por semanas en LINQ a Entidades

Tengo una aplicación que les permite a los usuarios ingresar el tiempo que pasan trabajando, y estoy tratando de obtener algunos buenos informes creados para esto que aprovechan LINQ para Entidades. Porque cadaTrackedTime tiene unTargetDate que es sólo la parte "Fecha" de unaDateTime, es relativamente sencillo agrupar los tiempos por usuario y fecha (no incluyo las cláusulas "dónde" por simplicidad):

var userTimes = from t in context.TrackedTimes
                group t by new {t.User.UserName, t.TargetDate} into ut
                select new
                {
                    UserName = ut.Key.UserName,
                    TargetDate = ut.Key.TargetDate,
                    Minutes = ut.Sum(t => t.Minutes)
                };

Gracias aDateTime.Month propiedad, agrupación por usuario y mes es solo un poco más complicado:

var userTimes = from t in context.TrackedTimes
                group t by new {t.User.UserName, t.TargetDate.Month} into ut
                select new
                {
                    UserName = ut.Key.UserName,
                    MonthNumber = ut.Key.Month,
                    Minutes = ut.Sum(t => t.Minutes)
                };

Ahora viene la parte difícil. ¿Hay alguna forma confiable de agrupar por semana? Probé lo siguiente basado enesta respuesta a una pregunta similar de LINQ to SQL:

DateTime firstDay = GetFirstDayOfFirstWeekOfYear();
var userTimes = from t in context.TrackedTimes
                group t by new {t.User.UserName, WeekNumber = (t.TargetDate - firstDay).Days / 7} into ut
                select new
                {
                    UserName = ut.Key.UserName,
                    WeekNumber = ut.Key.WeekNumber,
                    Minutes = ut.Sum(t => t.Minutes)
                };

Pero LINQ to Entities no parece admitir operaciones aritméticas en objetos DateTime, por lo que no sabe cómo hacerlo.(t.TargetDate - firstDay).Days / 7.

He considerado crear una vista en la base de datos que simplemente asigne días a semanas, y luego agregar ese contexto de Ver a mi Entity Framework y unirme a ella en mi consulta LINQ, pero parece mucho trabajo para algo como esto. ¿Hay una buena alternativa al enfoque aritmético? ¿Algo que funcione con Linq to Entities, que simplemente pueda incorporar a la declaración LINQ sin tener que tocar la base de datos? ¿Alguna forma de decirle a Linq a las entidades cómo restar una fecha de otra?

Resumen

Me gustaría agradecer a todos por sus respuestas reflexivas y creativas. Después de todo esto, parece que la respuesta real a esta pregunta es "esperar hasta .NET 4.0". Le daré la recompensa a Noldorin por dar la respuesta más práctica que aún aprovecha LINQ, con una mención especial a Jacob Proffitt por dar una respuesta que utiliza el Entity Framework sin la necesidad de modificaciones en el lado de la base de datos. También hubo otras respuestas geniales, y si mira la pregunta por primera vez, le recomiendo que lea todas las que hayan sido votadas, así como sus comentarios. Este realmente ha sido un magnífico ejemplo del poder de StackOverflow. ¡Gracias a todos!

Respuestas a la pregunta(13)

Su respuesta a la pregunta