List<KeyValuePair<string, long>> myList = new List<KeyValuePair<string, long>>(dic);
myList.Sort(delegate(KeyValuePair<string, long> s1, KeyValuePair<string, long> s2)
{
return s1.Value.CompareTo(s2.Value);
});
我只知道这是把Dictionary<string, long> 按value排序,但是不明白有颜色这段代码哎,能不能帮忙解释一下啊,谢谢。
这是一个很常见的写法啊。
Sort排序需要根据一个委托METHOD(KVP1,KVP2)的返回值来取得比较结果,从而进行排序。
你的这个方法,Sort后面括号里面的就是这个委托,而且用的是匿名委托(省得再重新定义了,直接在使用的地方就定义了)。
而比较委托里面的值则是KayVauePair<stirng,long>,之所以是这个,是因为你的myList内部的元素就是这样的,这个类型是和你的List<T>中的T一样的。而比较的具体方法就是用S1的value去比较s2的value大小,没有其它任何复杂的操作。
好像有点懂了,可能是我对sort()这个方法里面的重载方法理解不太好吧,我看看sort()这个方法的定义。
确实不太好理解,你把KeyValuePair<string,long>换成一个简单类型,比如int试试。。。
如果是int的话,好像是直接 Array.Sort()就行了,不用参数的。
就是实现一个KeyValuePair<string,long>的排序方法
是固定这样写的吗?好难理解是什么意思。