zoukankan      html  css  js  c++  java
  • Dictionary<int,string>排序

       Dictionary无序字典,但是其中int是有大小之分的,某种情况下,需要按int的大小进行排序。

    1  Dictionary<intstring> dicTest = new Dictionary<intstring>();
    2  dicTest.Add(0"第一项");
    3  dicTest.Add(3"第二项");
    4  dicTest.Add(5"第三项");
    5  dicTest.Add(1"第四项");

      需要对上面的dicTest按key进行排序,.net3.5在LINQ中很好实现,如下代码:

    1   var dicResut = from pair in dicTest
    2                  orderby pair.Key
    3                  select pair;

      但是项目用的.net2.0,没办法,自己排吧,我用的方法是:Dictionary-->DataTalbe排序-->Dictionary

     1 Dictionary<int,string> sortDic(Dictionary<int,string> dic,string type)
     2     {
     3         if (type==string.Empty)
     4         {
     5             type = "asc";
     6         }
     7         //转存在datatable
     8         DataTable dt = new DataTable();
     9         DataColumn id= new DataColumn("id"typeof(int));
    10         dt.Columns.Add(id);
    11         DataColumn str = new DataColumn("str"typeof(string));
    12         dt.Columns.Add(str);
    13         DataRow dr;
    14         foreach (KeyValuePair<int,string> p in dic)
    15         {
    16             dr = dt.NewRow();
    17             dr["id"= p.Key;
    18             dr["str"= p.Value;
    19             dt.Rows.Add(dr);
    20         }
    21         //排序
    22         DataRow[] rows=dt.Select(string.Empty, " id " + type);
    23 
    24         //排序后的放到Dictionary
    25         Dictionary<intstring> newdic = new Dictionary<intstring>();
    26         foreach (DataRow drr in rows)
    27         {
    28             newdic.Add(int.Parse(drr["id"].ToString()), drr["str"].ToString());
    29         }
    30         dt.Dispose();
    31         return newdic;
    32         
    33     }

      是笨点,但是也解决问题。

      上面这句话说明我对自己的认识很深刻,谢谢小曼同学,用SortedDictionary<TKey,TValue>替代Dictionary<TKey,TValue>。

  • 相关阅读:
    数据结构-串的堆分配存储
    ServerSocket
    Java-坦克大战
    Java-输入输出流
    MyEclipse 快捷键
    数据结构-串的定长顺序存储
    我的软考资料集合
    软考中级软件设计师考试大纲
    2016年第一季度阅读书目
    中国大陆开源镜像网站汇总
  • 原文地址:https://www.cnblogs.com/bandy/p/1025948.html
Copyright © 2011-2022 走看看