简体   繁体   English

C# 排序与 JavaScript 排序

[英]C# Sort vs JavaScript Sort

I am having following array as input to sort values in descending order:我将以下数组作为输入以降序对值进行排序:

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

In C#, I am using OrderByDescending and getting following output在 C# 中,我使用OrderByDescending并获得以下输出

C# code : C# 代码

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

Result (commas added after each value):结果(在每个值后添加逗号):

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

In Javascript, I am using sort and reverse and getting following different result在 Javascript 中,我使用sortreverse并得到以下不同的结果

javascript code : javascript代码

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

Result :结果

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

Can anyone help me how to sort values in C# as like JavaScript?任何人都可以帮助我如何像 JavaScript 一样对 C# 中的值进行排序?

Try changing the StringComparer:尝试更改 StringComparer:

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

It looks like the Javascript is doing a case insensitive sort.看起来 Javascript 正在执行不区分大小写的排序。 For C# you need to explicitly tell it to do this.对于 C#,您需要明确告诉它这样做。 So this should work;所以这应该有效;

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

Edit:编辑:

After update from OP then he discovered that the ignore case was not required.从 OP 更新后,他发现不需要忽略大小写。 So the following worked;所以以下工作;

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM