C#排序与JavaScript排序

C#排序与JavaScript排序,javascript,c#,asp.net,.net,sorting,Javascript,C#,Asp.net,.net,Sorting,我使用以下数组作为输入,按降序对值进行排序: var cars = ["8587009748118224023Po","8587009748118224023PP","8587009748118224023P,","8587009748118224023P$","8587009748118224023P<","8587009748118224023P?"] 结果(每个值

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

var cars = ["8587009748118224023Po","8587009748118224023PP","8587009748118224023P,","8587009748118224023P$","8587009748118224023P<","8587009748118224023P?"]
结果(每个值后加逗号):

结果

var rslt= cars.OrderByDescending(a => a);
cars.sort();
cars.reverse();
8587009748118224023Po,
8587009748118224023PP,
8587009748118224023P?,
8587009748118224023P<,
8587009748118224023P,
,
8587009748118224023P$
8587009748118224023Po,
8587009748118224023页,
8587009748118224023P?,

8587009748118224023P看起来Javascript正在进行不区分大小写的排序。对于C#你需要明确地告诉它这样做。所以这应该是可行的

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

在OP更新后,他发现不需要忽略案例。因此,以下方法奏效了

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

尝试更改StringComparer:

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

它给出了以下不同的结果(与javascript不同)8587009748118224023PP、8587009748118224023Po、8587009748118224023P?,8587009748118224023P@jason.kaisersmith,你的回答给了我线索,下面的一行给出了C#的确切结果,就像javascript一样。var rslt=cars.OrderByDescending(a=>a,StringComparer.Ordinal);您是对的,下面的代码在我的C#中给出了正确的结果。var rslt=cars.OrderByDescending(a=>a,StringComparer.Ordinal);尽管@Rajesh,这也给了你一个如何完成另一面的提示——如果你想让JavaScript像默认情况下的C#一样排序,你可以使用。
Array.Sort(cars, StringComparer.Ordinal);
Array.Reverse(cars);