2010-12-09 68 views
3

我需要在一個多維數組中添加一個值,並在一個while循環中使用。但我不知道如何。在c#asp.net中給多維數組添加一個值

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; 
     } 
+0

爲避免SQL注入攻擊,您可能需要考慮使用參數化SQL,而不是使用SQL。 – 2010-12-09 13:56:30

+0

只是一個想法 - 爲了簡化這個,你可以返回一個List 或ArrayList,其中DailyAvgRating是一個包含CompanyId的類/結構體/模型,以及你的SQL列(例如Num_Rating_Day,Rating_Gem,DayMonthYear)結果。 – byte 2010-12-09 13:58:56

回答

2

這假設您希望將查詢中的所有列放入數組中,並且所有列均返回整數。

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; 
} 
1

您應該使用非數組的數據類型。

嘗試使用陣列的列表:

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 }); 
    } 
} 
0

您可以通過創建一個SqlDataAdapter(用SELECT語句)使用一個DataTable,而且比DataAdapter.Fill方法(數據表)。 因此,您使用sql語句返回的所有值檢索DataTable