LINQ: utilizando INNER JOIN, Group y SUM

Estoy tratando de realizar el siguiente SQL utilizando LINQ y lo más parecido que conseguí fue realizar uniones cruzadas y cálculos de sum. Sé que tiene que haber una mejor manera de escribirlo, así que recurro al equipo de stack para pedir ayuda.

SELECT T1.Column1, T1.Column2, SUM(T3.Column1) AS Amount FROM T1 INNER JOIN T2 ON T1.T1ID = T2.T1ID INNER JOIN T3 ON T2.T3ID = T3.T3ID GROUP BY T1.Column1, T1.Column2 

Lo que he estado intentando es el siguiente código LINQ

 var qTotal = from T2 in context.T2 from T3 in context.T3 where T3.T3ID == T3.T3ID group T3 by T2.T1ID into gT2T3 from T1 in context.T1 where gT2T3.Key.Equals(T1.T1ID) select new { T1.Column1,T1.Column2,Amount = gT2T3.Sum(t => t.Column1)}; 

Sé que tiene que haber una mejor manera de escribirlo, simplemente no sé cómo, ¡cualquier ayuda sería genial!

Prueba esto:

 var total = from T1 in context.T1 join T2 in context.T2 on T1.T2ID equals T2.T2ID join T3 in context.T3 on T2.T3ID equals T3.T3ID group T3 by new { T1.Column1, T1.Column2 } into g select new { Column1 = T1.Column1, Column2 = T2.Column2, Amount = g.Sum(t3 => t3.Column1) }; 

Para mí (usando 4.0), lo siguiente funciona.

 var total = from T1 in context.T1 join T2 in context.T2 on T1.T2ID equals T2.T2ID join T3 in context.T3 on T2.T3ID equals T3.T3ID group T3 by new { T1.Column1, T1.Column2 } into g select new { Column1 = g.Key.Column1, Column2 = g.Key.Column2, Amount = g.Sum(t3 => t3.Column1) }; 

El código siguiente funciona para mí:

  var credit = (from bm in BulkMessage join sms in SMS on bm.BulkMessageId equals sms.BulkMessageId where bm.ProfileId == pid && bm.IsActive == true group sms by sms.SMSCredit into g select new { SMSCredits = g.Sum(s => s.SMSCredit) }).FirstOrDefault();