Dictionary<int,string>排序
Dictionary无序字典,但是其中int是有大小之分的,某种情况下,需要按int的大小进行排序。
1 Dictionary<int, string> dicTest = new Dictionary<int, string>();
2 dicTest.Add(0, "第一项");
3 dicTest.Add(3, "第二项");
4 dicTest.Add(5, "第三项");
5 dicTest.Add(1, "第四项");
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;
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<int, string> newdic = new Dictionary<int, string>();
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 }
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<int, string> newdic = new Dictionary<int, string>();
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>。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架