加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 03:49:04 所属栏目:百科 来源:网络整理
导读:本篇章节讲解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 arr

本篇章节讲解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#程序设计有所帮助。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读