Linq Query con SUM e ORDER BY

Ho una class (C #) chiamata Hit con una proprietà ItemID (int) e una Score (int). Salto il resto dei dettagli per farla breve. Ora nel mio codice, ho una lista enorme su cui ho bisogno di fare la seguente selezione (in una nuova lista): ho bisogno di ottenere la sum di tutti i Hit.Score per ogni singolo Hit.ItemID, ordinato per punteggio. Quindi, se ho i seguenti elementi nell’elenco originale

ItemID=3, Score=5 ItemID=1, Score=5 ItemID=2, Score=5 ItemID=3, Score=1 ItemID=1, Score=8 ItemID=2, Score=10 

l’elenco risultante dovrebbe contenere quanto segue:

 ItemID=2, Score=15 ItemID=1, Score=13 ItemID=3, Score=6 

Qualcuno può aiutare?

 var q = (from h in hits group h by new { h.ItemID } into hh select new { hh.Key.ItemID, Score = hh.Sum(s => s.Score) }).OrderByDescending(i => i.Score); 
 IEnumerable result = hits. GroupBy(hit => hit.ItemID). Select(group => new Hit { ItemID = group.Key, Score = group.Sum(hit => hit.Score) }). OrderByDescending(hit => hit.Score);