Avatar of Dovberman
DovbermanFlag 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
SOLUTION
Avatar of AndyAinscow
AndyAinscow
Flag of Switzerland image

Blurred text
THIS SOLUTION IS ONLY AVAILABLE TO MEMBERS.
View this solution by signing up for a free trial.
Members can start a 7-Day free trial and enjoy unlimited access to the platform.
See Pricing Options
Start Free Trial
ASKER CERTIFIED SOLUTION
Avatar of Robert Schutt
Robert Schutt
Flag of Netherlands image

Blurred text
THIS SOLUTION IS ONLY AVAILABLE TO MEMBERS.
View this solution by signing up for a free trial.
Members can start a 7-Day free trial and enjoy unlimited access to the platform.
Avatar of Dovberman
Dovberman
Flag of United States of America image

ASKER

Thank you.
.NET Programming
.NET Programming

The .NET Framework is not specific to any one programming language; rather, it includes a library of functions that allows developers to rapidly build applications. Several supported languages include C#, VB.NET, C++ or ASP.NET.

137K
Questions
--
Followers
--
Top Experts
Get a personalized solution from industry experts
Ask the experts
Read over 600 more reviews

TRUSTED BY

IBM logoIntel logoMicrosoft logoUbisoft logoSAP logo
Qualcomm logoCitrix Systems logoWorkday logoErnst & Young logo
High performer badgeUsers love us badge
LinkedIn logoFacebook logoX logoInstagram logoTikTok logoYouTube logo