一个字典排序的问题

deknight 2017-04-01 06:33:48
有个字典如下结构:
dic<int,int[]>
内容假设为:
0 {1,2,3}
1 {1,1,3}
2 {0,1,3}

现在,我需要对这个字典重新布局,按照数组中的第一位从小到大排序。即变成:
0 {0,1,3}
1 {1,2,3}
2 {1,1,3}
...全文
195 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuzuning 2017-04-01
  • 打赏
  • 举报
回复
如果一定要连 键 一起改变,可以
            var num = 0;
var r = dict.OrderBy(x => x.Value[0]).ToDictionary(x => num++, x => x.Value);
xuzuning 2017-04-01
  • 打赏
  • 举报
回复
字典可以按值排序
            var dict = new Dictionary<int, int[]>();
dict.Add(0, new int[] {1,2,3});
dict.Add(1, new int[] {1,1,3});
dict.Add(2, new int[] { 0, 1, 3 });
var r = dict.OrderBy(x => x.Value[0]).ToDictionary(x => x.Key, x => x.Value);
foreach (var x in r) Console.WriteLine("{0} : {1}", x.Key, string.Join(",", x.Value));

但排序后连键都变了,就不合常理了
deknight 2017-04-01
  • 打赏
  • 举报
回复
搞定搞定搞定
deknight 2017-04-01
  • 打赏
  • 举报
回复
是,我明白字典是无序的,所以我说我要对这个字典重新布局,重新组合,谢谢楼上几位

foreach (var s in xxx)
            {
                l.Add(new int[]{s.Value[0],s.Value[1],s.Value[2],s.Value[3],s.Value[4],s.Value[5]});
            }
            l.Sort((x, y) =>
            {
                int result;
                if (x[4] == y[4] && x[5] == y[5])
                {
                    result = 0;
                }
                else
                {
                    if (x[4].CompareTo(y[4]) > 0)
                    {
                        result = 1;
                    }
                    else if (x[4] == y[4] && x[5] > y[5])
                    {
                        result = 1;
                    }
                    else
                    {
                        result = -1;
                    }
                }

                return result;
            });
Poopaye 2017-04-01
  • 打赏
  • 举报
回复
为什么不用List<int>? 关键字典是无序的,何来排序一说?
deknight 2017-04-01
  • 打赏
  • 举报
回复
引用 2 楼 xuggzu 的回复:
linq====>按value[0]排序,或者用lamda表达式
求指教
xuggzu 2017-04-01
  • 打赏
  • 举报
回复
linq====>按value[0]排序,或者用lamda表达式
  • 打赏
  • 举报
回复
你应该学习把一个 List<int[ ]> 排序的知识。先不要纠结字典问题。

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧