Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.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
C#-按选定列对矩形数组进行排序_C#_Sorting_Multidimensional Array - Fatal编程技术网

C#-按选定列对矩形数组进行排序

C#-按选定列对矩形数组进行排序,c#,sorting,multidimensional-array,C#,Sorting,Multidimensional Array,请告诉我如何按第二列desc,然后按第一列asc(然后在第三列插入结果秩,我想这可能是一个单独的问题)对以下数组(C#)进行排序。 我是C#的初学者,我花了相当长的时间寻找这个看似简单的问题的答案,但我找不到任何适合我的方法。非常感谢您的帮助,谢谢 int[,] myArray = new int[5, 4] { {1, 7, 0, 0} , {2, 12, 0, 0} , {3, 15, 0, 0} , {4, 7, 0, 0} , {5, 1, 0, 0} };

请告诉我如何按第二列desc,然后按第一列asc(然后在第三列插入结果秩,我想这可能是一个单独的问题)对以下数组(C#)进行排序。 我是C#的初学者,我花了相当长的时间寻找这个看似简单的问题的答案,但我找不到任何适合我的方法。非常感谢您的帮助,谢谢

int[,] myArray = new int[5, 4]
{
   {1, 7, 0, 0} ,
   {2, 12, 0, 0} ,
   {3, 15, 0, 0} ,
   {4, 7, 0, 0} ,
   {5, 1, 0, 0}
};

在多维数组中,实际上没有“行”的概念。所有值与另一个值的关系都是相同的。这就是为什么排序多维数组有些棘手的原因

当您使用基本上是数组的数组时,它会变得更容易。您的阵列如下所示:

int[][] myJaggedArray = new int[][]
{
   new int[] { 1, 7, 0, 0 },
   new int[] { 2, 12, 0, 0 },
   new int[] { 3, 15, 0, 0 },
   new int[] { 4, 7, 0, 0 },
   new int[] { 5, 1, 0, 0 },
};
int[][] myJaggedArray = new int[myArray.GetUpperBound(0) + 1][];
for(int i = 0; i < myJaggedArray.Length; i++)
    myJaggedArray[i] = Enumerable.Range(0, myArray.GetUpperBound(1) + 1).Select(k => myArray[i,k]).ToArray();
您还可以将多维数组转换为锯齿数组,操作如下:

int[][] myJaggedArray = new int[][]
{
   new int[] { 1, 7, 0, 0 },
   new int[] { 2, 12, 0, 0 },
   new int[] { 3, 15, 0, 0 },
   new int[] { 4, 7, 0, 0 },
   new int[] { 5, 1, 0, 0 },
};
int[][] myJaggedArray = new int[myArray.GetUpperBound(0) + 1][];
for(int i = 0; i < myJaggedArray.Length; i++)
    myJaggedArray[i] = Enumerable.Range(0, myArray.GetUpperBound(1) + 1).Select(k => myArray[i,k]).ToArray();

在多维数组中,实际上没有“行”的概念。所有值与另一个值的关系都是相同的。这就是为什么排序多维数组有些棘手的原因

当您使用基本上是数组的数组时,它会变得更容易。您的阵列如下所示:

int[][] myJaggedArray = new int[][]
{
   new int[] { 1, 7, 0, 0 },
   new int[] { 2, 12, 0, 0 },
   new int[] { 3, 15, 0, 0 },
   new int[] { 4, 7, 0, 0 },
   new int[] { 5, 1, 0, 0 },
};
int[][] myJaggedArray = new int[myArray.GetUpperBound(0) + 1][];
for(int i = 0; i < myJaggedArray.Length; i++)
    myJaggedArray[i] = Enumerable.Range(0, myArray.GetUpperBound(1) + 1).Select(k => myArray[i,k]).ToArray();
您还可以将多维数组转换为锯齿数组,操作如下:

int[][] myJaggedArray = new int[][]
{
   new int[] { 1, 7, 0, 0 },
   new int[] { 2, 12, 0, 0 },
   new int[] { 3, 15, 0, 0 },
   new int[] { 4, 7, 0, 0 },
   new int[] { 5, 1, 0, 0 },
};
int[][] myJaggedArray = new int[myArray.GetUpperBound(0) + 1][];
for(int i = 0; i < myJaggedArray.Length; i++)
    myJaggedArray[i] = Enumerable.Range(0, myArray.GetUpperBound(1) + 1).Select(k => myArray[i,k]).ToArray();
完美地工作(我刚刚用OrderByDescending替换了OrderBy),非常感谢您的解决方案和解释-我显然误解了矩形阵列的概念完美地工作(我刚刚用OrderByDescending替换了OrderBy),非常感谢您的解答和解释-我显然误解了矩形阵列的概念