Está implícito, pero puede deberías haber mencionado la declaración de tu "miLista". déjame escribirlo para ti.
var myList=new List<KeyValuePair<string, int>>();
Ahora, lo que significa es que cada elemento de esta lista es una instancia de KeyValuePair [cadena, int].
Ahora, a su pregunta.
Una de las sobrecargas del método Sort acepta un delegado "Comparación", que toma dos elementos de una colección y devuelve un número entero.
public delegate int Comparison<T>(T x, T y)
En esencia, lo que está haciendo es crear un delegado anónimo que compara dos artículos (en su caso, usted está ordenando 'Valor' puede incluso ordenar en 'Clave') usando el método "CompareTo" de IComparable (cadena e int implementan esta interfaz).
IComparable.CompareTo devuelve un número entero (que se utiliza por el método Sort para organizar los elementos en su lista) que indica que lhs es menor que (-1), mayor que (1) o igual a (0) rhs.
FYI: En caso de que esté trabajando en C# 3.0, ni siquiera necesita un delegado anónimo. Se puede utilizar en lugar de expresión lambda (que es un atajo para definir delegado anónima, more?)
por ejemplo:
myList.Sort((x, y) => x.Value.CompareTo(y.Value));
//Sort over Value
myList.Sort((x, y) => x.Key.CompareTo(y.Key));
//Sort over key
Esperamos que la explicación es muy útil.
+1 por querer entender lo que está haciendo en lugar de pasar al siguiente fragmento que encuentre. –
No olvides aceptar una respuesta. –