当前位置:  开发笔记 > 编程语言 > 正文

LINQ或Lamba在它们的重复频率集内按升序对整数数组进行排序

如何解决《LINQ或Lamba在它们的重复频率集内按升序对整数数组进行排序》经验,为你挑选了1个好方法。

我的意见如下

int[] arr = new int[] { 3, 1, 2, 2, 4, 6, 6, 9, 9, 9, 7, 7, 7};

正如所见,

3,1,4 are repeated only 1 time
2, 6 are repeated 2 times each
9, 7 are repeated 3 times each.

如何编写逻辑来排序数组,使得它们在出现频率的集合中按升序排列

上面数组的预期输出是 1, 3, 4, 2, 2, 6, 6, 7, 7, 7, 9, 9, 9

我的尝试:

var res = (arr.OrderBy(i => i).Reverse()
            .GroupBy(x => x)
            .Where(g => g.Count() >= 1)
            .ToDictionary(x => x.Key, y => y.Count())
            .Select(x => x) // stuck here
            ).ToList();

decPL.. 10

尝试这样的事情:

var result = arr.GroupBy(x => x)
                .OrderBy(g => g.Count())
                .ThenBy(g => g.Key)
                .SelectMany(g => g);

这将对元素进行分组,首先按元素数量(升序)排序,然后按元素值排序,最后压缩为可枚举元素.



1> decPL..:

尝试这样的事情:

var result = arr.GroupBy(x => x)
                .OrderBy(g => g.Count())
                .ThenBy(g => g.Key)
                .SelectMany(g => g);

这将对元素进行分组,首先按元素数量(升序)排序,然后按元素值排序,最后压缩为可枚举元素.

推荐阅读
凹凸曼00威威_694
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有