C#用数字排序一个arraylist

fla*_*mme 2 c# sorting ienumerable icomparer

您好我想要一个排序数组,其中包含:

String[] info = new String[5]{"6,j", "7,d", "12,s", "4,h", "14,s" };
Run Code Online (Sandbox Code Playgroud)

但如果我使用这个:

Array.Sort(info);
Run Code Online (Sandbox Code Playgroud)

输出变为:

"7,d"
"6,j"
"4,h"
"14,s"
"12,s"
Run Code Online (Sandbox Code Playgroud)

但我不会输出:

"14,s"
"12,s"
"7,d"
"6,j"
"4,h"
Run Code Online (Sandbox Code Playgroud)

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

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

Array.Sort(info, new AlphanumComparatorFast());
Run Code Online (Sandbox Code Playgroud)

如果找不到using指令或程序集引用,则无法找到类型或命名空间"AlphanumComparatorFast"

是我得到的错误......

Fel*_*ano 11

尝试:

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

这只是通过数字部分排序,但您可以详细说明该示例.这段代码强烈假设总是有逗号分隔符,这可能是生产中的一个问题,做一些更准确的错误处理.如果数组包含一些不符合异常的元素,假设忽略失败的元素是可以接受的,我们可以写:

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

  • 如果可以的话,我会给鼓励准确的错误处理额外+1. (2认同)