关于泛型字典的反排序问题.
这段时间一直忙于项目,之中也遇到不少问题。让我映像深刻的就是关于多列数据同时排序的问题。
还是用一个例子来说明问题吧.
案例:
不知道园子里面有多少人关注足球。玩球的人都清楚足球里面有某赛季的某联赛的积分榜。
下面这张图片就是 英超08-09赛季的积分榜.

我们来分析这张图片上面的数据结构。
第一列数据就是排名编号,
第二列数据时英超联赛的20支球队,
第三列是每支球队本赛季共参加的比赛场数
第四到第八列 大家一看就知道什么意思
现在这里是跟据比分的多少按大到小排序,而且,还会发现一个问题,比分存在重复的,这该用什么来排序了???
也不要犯愁,尝试了很多集合类,最后还是决定用字典Dictionary。
因为这里是一个球队对应后面那么多列数据,所以就要用泛型的字典
Dictionary<int, ClassName> dic = new Dictionary<int, ClassName>(); 这种模式的.
很显然,因该将球队ID作为泛型字典的key值,后面的几列数据作为泛型字典的value值。
先构建一个实体类:
Code
这个类的作用大家都清楚。
现在又遇到问题了?
因为我们的目标是以积分来排序,但是字典的key值又是球队id,这完全搭不上边。好,万事都有解决的方法。
我们在构建一个自定义的 Comparer 类.
Code
以上完成了两步,最后一步的关键就是:将字典里面的keyvaluepair型的元素都拷贝到一个数组里面,然后通过数组的排序来实现排序
实现代码是:
Code
还是用一个例子来说明问题吧.
案例:
不知道园子里面有多少人关注足球。玩球的人都清楚足球里面有某赛季的某联赛的积分榜。
下面这张图片就是 英超08-09赛季的积分榜.

我们来分析这张图片上面的数据结构。
第一列数据就是排名编号,
第二列数据时英超联赛的20支球队,
第三列是每支球队本赛季共参加的比赛场数
第四到第八列 大家一看就知道什么意思
现在这里是跟据比分的多少按大到小排序,而且,还会发现一个问题,比分存在重复的,这该用什么来排序了???
也不要犯愁,尝试了很多集合类,最后还是决定用字典Dictionary。
因为这里是一个球队对应后面那么多列数据,所以就要用泛型的字典
Dictionary<int, ClassName> dic = new Dictionary<int, ClassName>(); 这种模式的.
很显然,因该将球队ID作为泛型字典的key值,后面的几列数据作为泛型字典的value值。
先构建一个实体类:
这个类的作用大家都清楚。
现在又遇到问题了?
因为我们的目标是以积分来排序,但是字典的key值又是球队id,这完全搭不上边。好,万事都有解决的方法。
我们在构建一个自定义的 Comparer 类.
以上完成了两步,最后一步的关键就是:将字典里面的keyvaluepair型的元素都拷贝到一个数组里面,然后通过数组的排序来实现排序
实现代码是:
这样一执行就可以将数据反序排列了,最后要做的就是
foreach (KeyValuePair<int, DetailStanding> kv in karray){}





}
}
浙公网安备 33010602011771号