Question: I have a SortedDictionary where I am holding points of a particular player and his name next to it. What I need to do is to sort this in a descending order so that I have the winner in the first position of the dictionary. How can I do that?

Also, how can I get an item from the list without knowing the key?

```
SortedDictionary<int, string> dict = new SortedDictionary<int, string>();
dict.Add(player1Pts, playerNames[0]);
dict.Add(player2Pts, playerNames[1]);
dict.Add(player3Pts, playerNames[2]);

```

Thanks for any help!

Answer: 
It doesn't really make sense to use a dictionary with the score as the key: the key must be unique, so it will fail if two players have the same score.

Instead, you should create a `Player` class that contains the name and score, and store `Player` objects in a `List<Player>`. If you need to sort the players by score, you can call `Sort` on the list with a custom comparer, or just order the result with Linq:

```
foreach (Player player in players.OrderByDescending(p => p.Score))
{
    // Do something with player
}

```
First: A Sorted Dictionary will always be sorted immediately, when you insert another Value.

But note: Using the points as KEY means that you cannot have players with EQUAL points.

But if you want to go with that, you can simple use the Last() Method of your Dictionary to get the player with the most points:

```
SortedDictionary<int, String> t = new SortedDictionary<int,string>();
t.Add(5, "a");
t.Add(10, "c");
t.Add(2, "b");
MessageBox.Show((t.Last<KeyValuePair<int,string>>()).Value);

```

This Will Result in "c".