troubleshooting Question

Error: Cannot implicitly convert type 'T[*,*]' to 'double[*,*]'

Avatar of Dovberman
DovbermanFlag for United States of America asked on
.NET ProgrammingMicrosoft Development
3 Comments2 Solutions1092 ViewsLast Modified:
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.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] = 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 CERTIFIED SOLUTION
Robert Schutt
Software Engineer

Our community of experts have been thoroughly vetted for their expertise and industry experience.

Join our community to see this answer!
Unlock 2 Answers and 3 Comments.
Start Free Trial
Learn from the best

Network and collaborate with thousands of CTOs, CISOs, and IT Pros rooting for you and your success.

Andrew Hancock - VMware vExpert
See if this solution works for you by signing up for a 7 day free trial.
Unlock 2 Answers and 3 Comments.
Try for 7 days

”The time we save is the biggest benefit of E-E to our team. What could take multiple guys 2 hours or more each to find is accessed in around 15 minutes on Experts Exchange.

-Mike Kapnisakis, Warner Bros