Jest to domyślne, ale być może powinieneś wspomnieć o deklaracji swojej "myList". Pozwól mi to dla ciebie napisać.
var myList=new List<KeyValuePair<string, int>>();
Co oznacza, że każda pozycja na tej liście jest instancją klasy KeyValuePair [string, int].
Teraz przychodzę na twoje pytanie.
Jedno z przeciążeń metody Sort akceptuje delegata "Porównanie", który pobiera dwie pozycje z kolekcji i zwraca liczbę całkowitą.
public delegate int Comparison<T>(T x, T y)
Zasadniczo, co robisz jest stworzenie anonimowego delegata, który porównuje dwa przedmioty (w przypadku, jesteś sortowania na „wartość”, można nawet rodzaj na „Key”) za pomocą „CompareTo” metoda IComparable (string i int implementują ten interfejs).
IComparable.CompareTo zwraca liczbę całkowitą (używaną przez Sortowanie do uporządkowania pozycji na liście), stwierdzając, że lhs jest mniejsze niż (-1), greather niż (1) lub jest równe (0) rhs.
FYI: Jeśli pracujesz nad C# 3.0, nie potrzebujesz nawet anonimowego delegata. Można użyć wyrażenia lambda zamiast (jest skrótem zdefiniowanie anonimowych delegata, more?)
np
myList.Sort((x, y) => x.Value.CompareTo(y.Value));
//Sort over Value
myList.Sort((x, y) => x.Key.CompareTo(y.Key));
//Sort over key
nadzieję, że wyjaśnienie jest bardzo pomocna.
+1 za to, że chcesz zrozumieć, co robisz, zamiast przechodzić do następnego znalezionego fragmentu. –
Nie zapomnij przyjąć odpowiedzi. –