搞了一下对double型二维数组排序,用DataTable来实现

relup relup 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
直接使用数组的Sort方法估计更有效率,后面用到再试着弄




#region double_Array[,] 排序方法
/*
用途:对Double类型的 2维数组,根据第二列进行升降排序
范例:
int saa = 0;
double[,] testArr = new double[6, 2];
for (int i = 0; i < 6; i++)
{
for (int j = 0; j < 2; j++)
{
testArr[i, j] = saa;
saa += 1;
}
}
testArr[2, 0] = 99;
testArr[2, 1] = 55;

Mdb_Data.Sort_doubleArray(ref testArr, "theNumber_showCount DESC");

注意:
1、Double二维数组,第二个维度一定是0、1两个列,绝对不能超过1,因为此方法我只是为了:
例如 双色球0~33个数字,每个数字都出现了若干次,请降序排列
2、将此方法的第二个字符串型参数中的 DESC 改成 ASC 即可实现升序排列
3、注意此方法结尾部分的一个DataRow[]定义
DataRow[] foundRows;//注意这个Row定义 返回二维的Row数组,可通过foundRows[i][0]来访问
4、如果下次需要对数组的列或者其他进行改动:
column的添加通过for来添加
column.ColumnName = "whatNumber_in_Loto";<--Name通过数组的方式来命名
"whatNumber_in_Loto > -90000"这个参数需要改写成全部行的条件
row的赋值也必须改成for循环来根据列的数组名称来赋值
*/
//----------------------------------------------------------------------//|
public void Sort_doubleArray(ref double[,] sort_Double_Arr, string sortExpression)
{ //|
DataSet DataSet_sortTable_in_this = new DataSet(); //|
DataTable sortTable_Instantiated = new DataTable("sortTable_Name"); //|
DataColumn column; //|
DataRow row; //|
// //|
column = new DataColumn(); //|
column.DataType = System.Type.GetType("System.Double"); //|
column.ColumnName = "whatNumber_in_Loto"; //|
column.ReadOnly = false; //|
// Add the Column to the DataColumnCollection. //|
sortTable_Instantiated.Columns.Add(column); //|
// //|
// Create second column. //|
column = new DataColumn(); //|
column.DataType = System.Type.GetType("System.Double"); //|
column.ColumnName = "theNumber_showCount"; //|
column.AutoIncrement = false; //|
column.ReadOnly = false; //|
column.Unique = false; //|
// //|
sortTable_Instantiated.Columns.Add(column); //|
// //|
for (int ids = 0; ids < sort_Double_Arr.GetLength(0); ids++) //|
{ //|
row = sortTable_Instantiated.NewRow(); //|
row["whatNumber_in_Loto"] = sort_Double_Arr[ids, 0]; //|
row["theNumber_showCount"] = sort_Double_Arr[ids, 1]; //|
sortTable_Instantiated.Rows.Add(row); //|
} //|
// //|
DataRow[] foundRows;//注意这个DataRow[]的数组定义,一般定义都不带括号,这个返回二维的Row数组,可通过foundRows[i行][0]来访问
// //|
foundRows = sortTable_Instantiated.Select("whatNumber_in_Loto > -90000", sortExpression);//为什么是-90000,因为一般的数字都是从0开始到正数去,选择-90000主要是不希望有负数时候不能使用此方法
for (int ifr = 0; ifr < foundRows.Length; ifr++) //|
{ //|
sort_Double_Arr[ifr, 0] = Convert.ToDouble(foundRows[ifr][0]); //|
sort_Double_Arr[ifr, 1] = Convert.ToDouble(foundRows[ifr][1]); //|
} //|
// //|
foundRows = sortTable_Instantiated.Select("whatNumber_in_Loto = -90000", sortExpression);//清空foundRows
DataSet_sortTable_in_this.Clear();//清空DataSet //|
}// <--Sort_doubleArray()方法 End //|
//----------------------------------------------------------------------//|
#endregion





...全文
评论 6
收藏 已收藏
分享
返回顶部
relup
C# 111,129 成员 642,538 内容