I have a procedure that sorts a 2 dimensional array. This procedure needs to return the sorted array. However I get the Cannot implicitly convert type 'T[*,*]' to 'double[*,*]'
How can I fix this?
Thanks,
My Code:
double[,] dblArrABValSort = new double[22, 2];
dblArrABValSort = SortArray(dblArrAB, 0, "ASC");
private double[,] SortArray<T>(T[,] myArray, int sortCol, string order) // What is <T> ?
/// <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"/>
{
double[,] mySortedArray = new double[22, 2];
int colCount = myArray.GetLength(1), rowCount = myArray.GetLength(0);
if (sortCol >= colCount || sortCol < 0)
throw new System.ArgumentOutOfRangeE
xception("
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] = myArray[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++)
{
myArray[row, col] = (T)dr[col];
}
}
// myArray is the sorted array
return myArray; //Error: Cannot implicitly convert type 'T[*,*]' to 'double[*,*]'
}
How can I convert type 'T[*,*]' to 'double[*,*]' ?
ASKER