直接使用数组的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
#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
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货