关于泛型字典的反排序问题.

      这段时间一直忙于项目,之中也遇到不少问题。让我映像深刻的就是关于多列数据同时排序的问题。
      还是用一个例子来说明问题吧.
       案例:
            不知道园子里面有多少人关注足球。玩球的人都清楚足球里面有某赛季的某联赛的积分榜。
            下面这张图片就是 英超08-09赛季的积分榜.
            
            
            我们来分析这张图片上面的数据结构。
            第一列数据就是排名编号,
            第二列数据时英超联赛的20支球队,
            第三列是每支球队本赛季共参加的比赛场数
            第四到第八列 大家一看就知道什么意思
            
            现在这里是跟据比分的多少按大到小排序,而且,还会发现一个问题,比分存在重复的,这该用什么来排序了???
            也不要犯愁,尝试了很多集合类,最后还是决定用字典Dictionary。
            因为这里是一个球队对应后面那么多列数据,所以就要用泛型的字典
            Dictionary<int, ClassName> dic = new Dictionary<int, ClassName>();  这种模式的.
            很显然,因该将球队ID作为泛型字典的key值,后面的几列数据作为泛型字典的value值。
            先构建一个实体类:
            
Code

      这个类的作用大家都清楚。
      现在又遇到问题了?
      因为我们的目标是以积分来排序,但是字典的key值又是球队id,这完全搭不上边。好,万事都有解决的方法。
      我们在构建一个自定义的 Comparer 类.
Code

      以上完成了两步,最后一步的关键就是:将字典里面的keyvaluepair型的元素都拷贝到一个数组里面,然后通过数组的排序来实现排序
      实现代码是:
      
Code

     

      这样一执行就可以数据反序排列了,最后要做的就是
      foreach (KeyValuePair<int, DetailStanding> kv in karray){}
      
      
      
      

posted @ 2009-07-28 22:56  翱鹰  阅读(421)  评论(2)    收藏  举报