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#程序设计有所帮助。