这是隐含的,但可能你应该提到你的“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