これは暗黙的ですが、「myList」の宣言について言及する必要があるかもしれません。あなたのためにそれを書かせてください。
var myList=new List<KeyValuePair<string, int>>();
つまり、このリストの各項目はKeyValuePair [string、int]のインスタンスであるということです。
さて、あなたの質問に来ます。
Sortメソッドのオーバーロードの1つは、コレクションの2つの項目を受け取り、整数を返す「比較」デリゲートを受け入れます。
public delegate int Comparison<T>(T x, T y)
基本的に、あなたがしているのは、IComparableの「CompareTo」メソッドを使用して2つのアイテムを比較する匿名のデリゲートを作成することです(この場合、「Value」でソートし、「Key」でソートすることもできます)(stringとintはこれを実装します)インターフェース)。
IComparable.CompareToは、lhsが(-1)未満、(1)より大きい、または(0)rhsに等しいことを示す整数(Sortメソッドによってリスト内のアイテムを配置するために使用されます)を返します。
参考:C#3.0で作業している場合は、匿名のデリゲートも必要ありません。代わりにラムダ式を使用できます(匿名デリゲートを定義するための省略形です、もっと?)
例えば:
myList.Sort((x, y) => x.Value.CompareTo(y.Value));
//Sort over Value
myList.Sort((x, y) => x.Key.CompareTo(y.Key));
//Sort over key
説明がお役に立てば幸いです。