C#实现对二维数组排序的方法
本文实例讲述了C#实现对二维数组排序的方法。分享给大家供大家参考。具体实现方法如下:
///<summary>
///Agenericroutinetosortatwodimensionalarrayofaspecifiedtypebasedonthespecifiedcolumn.
///</summary>
///<paramname="array">Thearraytosort.</param>
///<paramname="sortCol">Theindexofthecolumntosort.</param>
///<paramname="order">Specify"DESC"or"DESCENDING"foradescendingsortotherwise
///leaveblankorspecify"ASC"or"ASCENDING".</param>
///<remarks>Theoriginalarrayissortedinplace.</remarks>
///<seecref="http://stackoverflow.com/questions/232395/how-do-i-sort-a-two-dimensional-array-in-c"/>
privatestaticvoidSort<T>(T[,]array,intsortCol,stringorder)
{
intcolCount=array.GetLength(1),rowCount=array.GetLength(0);
if(sortCol>=colCount||sortCol<0)
thrownewSystem.ArgumentOutOfRangeException("sortCol","Thecolumntosortonmustbecontainedwithinthearraybounds.");
DataTabledt=newDataTable();
//Namethecolumnswiththeseconddimensionindexvalues,e.g.,"0","1",etc.
for(intcol=0;col<colCount;col++)
{
DataColumndc=newDataColumn(col.ToString(),typeof(T));
dt.Columns.Add(dc);
}
//Loaddataintothedatatable:
for(introwindex=0;rowindex<rowCount;rowindex++)
{
DataRowrowData=dt.NewRow();
for(intcol=0;col<colCount;col++)
rowData[col]=array[rowindex,col];
dt.Rows.Add(rowData);
}
//Sortbyusingthecolumnindex=name+anoptionalorder:
DataRow[]rows=dt.Select("",sortCol.ToString()+""+order);
for(introw=0;row<=rows.GetUpperBound(0);row++)
{
DataRowdr=rows[row];
for(intcol=0;col<colCount;col++)
{
array[row,col]=(T)dr[col];
}
}
dt.Dispose();
}
希望本文所述对大家的C#程序设计有所帮助。