+1 Almost Perfect! The one think I wish would be that the logic for ordering parameters was in a single place (rather than in the order by clause, and in the if statement.)
–
John GietzenMay 31 '09 at 16:50

Possible bug fix: set "lastRank" to 1 so that in case the best score somehow turns out to be "-1", the rank will still be set to 1.
–
John GietzenMay 31 '09 at 17:06

the logic for ordering is in one place. the logic for comparing is in another. you could put it into the Result class using CompareTo and Equals
–
TheSoftwareJediMay 31 '09 at 17:07

I did not vote this down, but I need non-dense ranking, which is unavailable in your solution.
–
John GietzenMay 31 '09 at 17:08

+1: Ah, now that I have cleaned up, I have added a class similar to yours, and I now see where this is useful. See the question for how I have ended up using all of the suggestions.
–
John GietzenMay 31 '09 at 18:01