首页 > 解决方案 > 使用 LINQ 的 OrderBy 对包含数字和字符的项目的数组进行排序无法正常工作

问题描述

我正在尝试缩短包含数字和字符的 ID,如下所示

string[] dataIDs = new string[] { "001", "002", "010", "011", "EMP001", "EMP010", "EMP002", "EMP011" };

foreach (var item in dataIDs.OrderBy(x => x))
{
    Console.WriteLine(item);
}

输出:

'001', '010', '011', '002', 'EMP001', 'EMP010', 'EMP011', 'EMP002'

但我期待:

'001', '002', '010', '011', 'EMP001', 'EMP002', 'EMP010', 'EMP011'

标签: c#linq

解决方案


你可以用这个:)

string[] dataIDs = new string[] { "001", "002", "010", "011", "EMP001", "EMP010", "EMP002", "EMP011" };

foreach (var item in dataIDs.OrderBy(x => x, StringComparer.Ordinal))
{
    Console.WriteLine(item);
}

推荐阅读