Adding value to multidimensional array in c # asp.net

I need to add values ​​in a multidimensional array of whitin while while. But I dont know how.

public Array getDailyAvgRatingByCompanyId(int companyId, int periodStart = 0, int periodEnd = 0)
        {
            int[,] arr = { { }, { } };

            string queryString = "SELECT num_ratings_day, rating_gem, daymonthyear FROM company_rating_daily_avg WHERE company_id = " + companyId + " ORDER BY daymonthyear ASC";
            SqlDataReader myDataReader = Database.sqlDataReader(queryString);

            if (myDataReader.HasRows)
            {
                while (myDataReader.Read())
                {
                    //Something like arr[0].Push(myDataReader['num_ratings_day']
                }
            }

            return arr;
        }
+3
source share
3 answers

This assumes that you want all the columns in the query to fit into an array and that all columns return ints.

public Array getDailyAvgRatingByCompanyId(int companyId, int periodStart = 0, int periodEnd = 0)
{
    List<int[]> rowList = new List<int[]>();

    string queryString = "SELECT num_ratings_day, rating_gem, daymonthyear FROM company_rating_daily_avg WHERE company_id = " + companyId + " ORDER BY daymonthyear ASC";
    SqlDataReader myDataReader = Database.sqlDataReader(queryString);

    if (myDataReader.HasRows)
    {
        while (myDataReader.Read())
        {
            int[] values = new int[3];
            values[0] = myDataReader['num_ratings_day'];
            values[1] = myDataReader['rating_gem'];
            values[2] = myDataReader['daymonthyear'];
            rowList.add(values);
        }
    }

    int[,] arr = new int[rowList.Count, 3];

    for(int i = 0; i < rowList.Count; ++i)
    {
        for(int j = 0; j < 3; ++j)
        {
            arr[i,j] = rowList[i][j];
        }
    }

    return arr;
}
+2
source

To do this, you must use a data type other than Array.

Try using a list of arrays:

var list = new List<int[]>();

if (myDataReader.HasRows)
{
    while (myDataReader.Read())
    {
        var int1 = ??; // Get data 1
        var int2 = ??; // Get data 2

        list.Add(new[] { int1, int2 });
    }
}
+1
source

You can use a DataTable by creating a SqlDataAdapter (with a SELECT statement) rather than a DataAdapter.Fill (DataTable). This way you get a DataTable with all the values ​​returned by the sql statement

0
source

Source: https://habr.com/ru/post/1779410/


All Articles