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>。

 

posted @   Ethan_村长  阅读(5969)  评论(3编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
点击右上角即可分享
微信分享提示