C# · 12月 28, 2021

C#实现对二维数组排序的方法

本文实例讲述了C#实现对二维数组排序的方法。分享给大家供大家参考。具体实现方法如下:

/// <summary>/// A generic routine to sort a two dimensional array of a specified type based on the specified column./// </summary>/// <param name=”array”>The array to sort.</param>/// <param name=”sortCol”>The index of the column to sort.</param>/// <param name=”order”>Specify “DESC” or “DESCENDING” for a descending sort otherwise/// leave blank or specify “ASC” or “ASCENDING”.</param>/// <remarks>The original array is sorted in place.</remarks>/// <see cref=”http://stackoverflow.com/questions/232395/how-do-i-sort-a-two-dimensional-array-in-c”/>private static void Sort<T>(T[,] array,int sortCol,string order){ int colCount = array.GetLength(1),rowCount = array.GetLength(0); if (sortCol >= colCount || sortCol < 0) throw new System.ArgumentOutOfRangeException(“sortCol”,”The column to sort on must be contained within the array bounds.”); DataTable dt = new DataTable(); // Name the columns with the second dimension index values,e.g.,”0″,”1″,etc. for (int col = 0; col < colCount; coL++) { DataColumn dc = new DataColumn(col.ToString(),typeof(T)); dt.Columns.Add(dc); } // Load data into the data table: for (int rowindex = 0; rowindex < rowCount; rowindex++) { DaTarow rowData = dt.NewRow(); for (int col = 0; col < colCount; coL++) rowData[col] = array[rowindex,col]; dt.Rows.Add(rowData); } // Sort by using the column index = name + an optional order: DaTarow[] rows = dt.Select(“”,sortCol.ToString() + ” ” + order); for (int row = 0; row <= rows.GetUpperBound(0); row++) { DaTarow dr = rows[row]; for (int col = 0; col < colCount; coL++) { array[row,col] = (T)dr[col]; } } dt.Dispose();}

希望本文所述对大家的C#程序设计有所帮助。