這是隱含的,但可能你應該提到你的「myList」的聲明。 讓我爲你寫。
var myList=new List<KeyValuePair<string, int>>();
現在,它意味着此列表中的每個項目都是KeyValuePair [string,int]的一個實例。
現在,來到您的問題。
Sort方法的重載之一接受一個「比較」委託,它接受兩個集合項並返回一個整數。
public delegate int Comparison<T>(T x, T y)
從本質上講,你正在做的是創建一個匿名委託其比較兩個項目(在你的情況下,要排序的「價值」,你甚至可以排序的「鑰匙」)使用的「的CompareTo」方法IComparable(字符串和int實現此接口)。
IComparable.CompareTo返回一個整數(Sort方法用於排列列表中的項),指出lhs小於(-1),大於(1)或等於(0)rhs。
供參考:如果你正在使用C#3.0,你甚至不需要匿名委託。您可以使用lambda表達式代替(它是一個速記定義匿名委託,more?)
如:
myList.Sort((x, y) => x.Value.CompareTo(y.Value));
//Sort over Value
myList.Sort((x, y) => x.Key.CompareTo(y.Key));
//Sort over key
希望解釋是有幫助的。
+1想知道你在做什麼,而不是移動到你找到的下一個片段。 – 2009-11-20 05:11:04
不要忘記接受答案。 – 2009-11-20 06:22:59