本文实例讲述了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#程序设计有所帮助。
本文地址:https://www.stayed.cn/item/4839
转载请注明出处。
本站部分内容来源于网络,如侵犯到您的权益,请 联系我