c# - 用于自然排序的 IComparer

标签 c# list sorting natural-sort

<分区>

一段时间以来,我一直在寻找解决方案。

当我使用字符串排序对下面的内容进行排序时,我有一个列表:

10
10b
1111
1164
1174
23
23A
23B
23D
23E

我真的希望列表是:

10
10b
23
23A
23B
23D
23E
1111
1164
1174

数字排序也不起作用。

最佳答案

如果你有 LINQ,你可以使用 OrderBy:

Regex digitPart = new Regex(@"^\d+", RegexOptions.Compiled);
...
myList.OrderBy(x => int.Parse(digitPart.Match(x).Value))

关于c# - 用于自然排序的 IComparer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8568696/

相关文章:

c# - 在带有 GroupBy 和 Sum 聚合的 ObservableCollection 上使用 LINQ

c# - 二进制搜索算法 : Text File for each record in array

python - 如何打印列表中所有元素的第一个字母?

python - 列表乘积的递归函数不起作用

algorithm - 重新排序列表的元素,以便连续的元素彼此成功?

c# - InputBindings 的 WinRT 等价物是什么?

c# - XmlDocument 保存使文件保持打开状态

java - ListView-无法在TextView上转换 Intent

r - 如何根据 R 中的特定样本名称字符对列中的数据进行排序?

c++ - 使用排序函数根据函数对列表进行排序