C# Sort vs JavaScript Sort



我有以下数组作为输入,按降序对值进行排序:

var cars = ["8587009748118224023Po","8587009748118224023PP","8587009748118224023P,","8587009748118224023P$","8587009748118224023P<","8587009748118224023P?"]

在 C# 中,我正在使用OrderByDescending并获得以下输出

C# 代码

var rslt= cars.OrderByDescending(a => a);

结果(每个值后添加逗号(:

8587009748118224023PP,
8587009748118224023Po,
8587009748118224023P<,
8587009748118224023P?,
8587009748118224023P,
,
8587009748118224023P$,

在Javascript中,我使用排序反向并得到不同的结果

JavaScript代码

cars.sort();
cars.reverse();

结果

8587009748118224023Po,
8587009748118224023PP,
8587009748118224023P?,
8587009748118224023P<,
8587009748118224023P,
,
8587009748118224023P$

谁能帮我如何在 C# 中像 JavaScript 一样对值进行排序?

尝试更改 StringComparer:

Array.Sort(cars, StringComparer.Ordinal);
Array.Reverse(cars);

看起来Javascript正在执行不区分大小写的排序。 对于 C#,您需要显式告诉它执行此操作。 所以这应该有效;

var rslt = cars.OrderByDescending(a => a, StringComparer.OrdinalIgnoreCase);

编辑:

从OP更新后,他发现忽略大小写不是必需的。 所以以下工作;

var rslt = cars.OrderByDescending(a => a, StringComparer.Ordinal);

最新更新