Agrupar por semanas no LINQ to Entities

Eu tenho um aplicativo que permite aos usuários inserir o tempo que eles gastam trabalhando, e estou tentando obter um bom relatório construído para isso, que aproveita o LINQ to Entities. Porque cadaTrackedTime tem umTargetDate que é apenas a parte "Data" de umDateTime, é relativamente simples agrupar os tempos por usuário e data (estou deixando de fora as cláusulas "where" para simplificar):

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

Graças aoDateTime.Month propriedade, agrupando por usuário e mês é apenas um pouco mais 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)
                };

Agora vem a parte complicada. Existe uma maneira confiável de agrupar por semana? Eu tentei o seguinte com base emessa resposta para uma pergunta similar ao 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)
                };

Mas o LINQ to Entities não parece suportar operações aritméticas em objetos DateTime, então ele não sabe como fazer(t.TargetDate - firstDay).Days / 7.

Eu considerei criar um View no banco de dados que simplesmente mapeia de dias a semanas e, em seguida, adicionando o contexto View to my Entity Framework e unindo-o a ele em minha consulta LINQ, mas isso parece ser muito trabalhoso para algo assim. Existe uma boa solução para a abordagem aritmética? Algo que funciona com o Linq to Entities, que posso simplesmente incorporar na instrução LINQ sem ter que tocar no banco de dados? Alguma maneira de dizer ao Linq to Entities como subtrair uma data da outra?

Resumo

Eu gostaria de agradecer a todos por suas respostas reflexivas e criativas. Depois de todo esse processo, parece que a resposta real para essa questão é "esperar até o .NET 4.0". Eu vou dar a recompensa para Noldorin por dar a resposta mais prática que ainda alavanca LINQ, com uma menção especial a Jacob Proffitt por apresentar uma resposta que usa o Entity Framework sem a necessidade de modificações no lado do banco de dados. Houve outras ótimas respostas também, e se você estiver olhando para a pergunta pela primeira vez, recomendo a leitura de todas as que foram votadas, bem como seus comentários. Este foi realmente um excelente exemplo do poder do StackOverflow. Obrigado a todos!

questionAnswers(13)

yourAnswerToTheQuestion