Avatar of Dovberman
Dovberman
Flag for United States of America asked on

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

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[*,*]' ?
.NET ProgrammingMicrosoft Development

Avatar of undefined
Last Comment
Dovberman

8/22/2022 - Mon
SOLUTION
AndyAinscow

Log in or sign up to see answer
Become an EE member today7-DAY FREE TRIAL
Members can start a 7-Day Free trial then enjoy unlimited access to the platform
Sign up - Free for 7 days
or
Learn why we charge membership fees
We get it - no one likes a content blocker. Take one extra minute and find out why we block content.
Not exactly the question you had in mind?
Sign up for an EE membership and get your own personalized solution. With an EE membership, you can ask unlimited troubleshooting, research, or opinion questions.
ask a question
ASKER CERTIFIED SOLUTION
Robert Schutt

Log in or sign up to see answer
Become an EE member today7-DAY FREE TRIAL
Members can start a 7-Day Free trial then enjoy unlimited access to the platform
Sign up - Free for 7 days
or
Learn why we charge membership fees
We get it - no one likes a content blocker. Take one extra minute and find out why we block content.
Not exactly the question you had in mind?
Sign up for an EE membership and get your own personalized solution. With an EE membership, you can ask unlimited troubleshooting, research, or opinion questions.
ask a question
Dovberman

ASKER
Thank you.
I started with Experts Exchange in 2004 and it's been a mainstay of my professional computing life since. It helped me launch a career as a programmer / Oracle data analyst
William Peck