Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/263.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Array.sort和Linq OrderBy给出不同的结果_Javascript_C#_Arrays_Sorting - Fatal编程技术网

Javascript Array.sort和Linq OrderBy给出不同的结果

Javascript Array.sort和Linq OrderBy给出不同的结果,javascript,c#,arrays,sorting,Javascript,C#,Arrays,Sorting,我试图用C#和javascript对数组进行排序。但是我有一个问题,两个排序结果都不匹配。它们的排序都不同,例如,如果输入数组有下划线 在C中,下面是一个示例代码,是一个dotnetfiddle链接 using System; using System.Linq; public class Program { public static void Main() { var array= new string[]{"Meter_2","Meter0Add","Me

我试图用C#和javascript对数组进行排序。但是我有一个问题,两个排序结果都不匹配。它们的排序都不同,例如,如果输入数组有下划线

在C中,下面是一个示例代码,是一个dotnetfiddle链接

using System;
using System.Linq;

public class Program
{
    public static void Main()
    {
        var array= new string[]{"Meter_2","Meter0Add","Meter0Replace","Meter_1","ZZZ"};

        var temp= array.OrderBy(x => x).ToArray();

        foreach(string x in temp)
        {
            Console.WriteLine(x);
        }

    }
}
var array  = ["Meter_2","Meter0Add","Meter0Replace","Meter_1","ZZZ"];
array.sort();
document.writeln(array.join(", "));
结果: 米_1, 米_2, Meter0Add, 仪表0更换, ZZZ

在javascript中,下面是一个代码示例,它是一个js fiddle链接

using System;
using System.Linq;

public class Program
{
    public static void Main()
    {
        var array= new string[]{"Meter_2","Meter0Add","Meter0Replace","Meter_1","ZZZ"};

        var temp= array.OrderBy(x => x).ToArray();

        foreach(string x in temp)
        {
            Console.WriteLine(x);
        }

    }
}
var array  = ["Meter_2","Meter0Add","Meter0Replace","Meter_1","ZZZ"];
array.sort();
document.writeln(array.join(", "));
结果 Meter0Add, 仪表0更换, 米_1, 米_2, ZZZ

问题是如何使javascript与C#?

JS一样具有默认排序顺序,并且不稳定,除非提供了比较函数。根据MDN:

sort()方法对数组中的元素进行适当排序并返回 阵列。这种情况不一定稳定。默认排序顺序 是根据字符串Unicode代码点

如果将其用作比较函数,将得到相同的结果:

var数组=[“仪表2”、“仪表0添加”、“仪表0替换”、“仪表1”、“ZZZ”];
array.sort(函数(a,b){
返回a.localeCompare(b);
});
console.log(array.join(“,”)区域性敏感(C#)和顺序(JS)比较是不同的-如果在C#中使用
ordinal
进行比较,您将得到相同的结果(请参阅)。我找不到好的副本,所以-希望有人会(或只是再次键入相同的解释)。