我有以下数组作为输入,按降序对值进行排序:
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);