C# 用数字对数组列表进行排序

标签 c# sorting ienumerable icomparer

你好,我确实想要一个数组,其中包含:

String[] info = new String[5]{"6,j", "7,d", "12,s", "4,h", "14,s" };

但是如果我使用这个:

Array.Sort(info);

输出变为:

"7,d"
"6,j"
"4,h"
"14,s"
"12,s"

但我不会输出为:

"14,s"
"12,s"
"7,d"
"6,j"
"4,h"

在 C# 中/使用 C# 最简单的方法是什么??

当我这样做时,我无法让字母数字排序工作:

Array.Sort(info, new AlphanumComparatorFast());

无法找到类型或命名空间“AlphanumComparatorFast” 您缺少 using 指令或程序集引用

是我得到的错误...

最佳答案

尝试:

var sortedArray = info.OrderBy(s=>int.Parse(s.Split(',')[0])).ToArray();

这仅按数字部分排序,但您可以详细说明该示例。此代码强烈假设始终存在逗号分隔符,这可能是生产中的一个问题,请进行更准确的错误处理。 如果数组包含一些不符合异常的元素,只要忽略失败的元素是可以接受的,我们可以这样写:

 var sortedArray = info.Where(k=>!string.IsNullOrEmpty(k)&&k.IndexOf(",")!=-1)
.OrderBy(s=>int.Parse(s.Split(',')[0])).ToArray();

关于C# 用数字对数组列表进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8886401/

相关文章:

java - Selenium C# Java - WebDriver 和 IWebDriver 有什么区别?

javascript - 何时告知冒泡排序已完成 JavaScript

php - mysql将同一列中的相同值分组到回显表

.net - IEnumerable 的性能比较和源中每个项目的引发事件?

c# - 将多列添加到 range.RemoveDuplicates

c# - INotifyPropertyChanged 自定义属性

c# - 使 EF 将字节数组映射为二进制而不是 varbinary

javascript - 在 localStorage 中存储有序对象/数组

c# - Distinct concat 两个 IEnumerables 并标记它是否来自列表 B

c# - 仅在一个 LINQ 表达式中获取 IEnumerable 集合的总和