【问题标题】:Correctly filling up multidimensional array正确填充多维数组
【发布时间】:2011-06-29 03:59:38
【问题描述】:

我正在尝试使用 SQL 数据库中的数据填充多维数组。因为没有像 myarray.Add 这样的函数,所以我想出了别的东西。但它不工作!我正在使用 C# .net 以下行给出错误:arr[counter2] = {myDataReader["rating"], myDataReader["date"]};

public string[,] getData(int id)
    {


        string queryString = "SELECT rating, date FROM rating WHERE id = '" + id + "'";
        SqlDataReader myDataReader = Database.sqlDataReader(queryString);

        if (myDataReader.HasRows)
        {
            int counter = 0;
            while (myDataReader.Read())
            {
                counter++;
            }
            string[,] arr = new string[counter, 2];
            int counter2 = 0;
            while (myDataReader.Read())
            {
                counter2++;
                arr[counter2] = {myDataReader["rating"], myDataReader["date"]};
            }
        }

        return arr;
    }

有人可以帮我解决这个问题或向我解释做同样事情的另一种(可能更好的)方法吗?

【问题讨论】:

  • 是否有任何特殊原因希望数据进入数组而不是数据表?
  • 您的ratingdate 数据库列是否都是字符串类型(例如varchar)?

标签: c# .net


【解决方案1】:

这太复杂了。试试这个:

public string[,] getData(int id)
{        
    string queryString = "SELECT rating, date FROM rating WHERE id = '" + id + "'";
    List<string[]> data = new List<string[]>();

    using(SqlDataReader myDataReader = Database.sqlDataReader(queryString))       
        while(myDataReader.Read())        
            data.Add(new int[] { (string)myDataReader["rating"], (string)myDataReader["date"] });

    return data.ToArray();
}

另外,你真的不应该连接你的 SQL 语句。

【讨论】:

  • @Justin 是啊,不知道那些ints 是从哪里来的。
  • 我将其更改为 string[] 但在 data.ToArray(); 我收到此错误:无法将类型 'string[][]' 隐式转换为 'string[, ]'
【解决方案2】:

要么使用锯齿状数组:

public string[][] getData(int id)
...
string[][] arr = new string[counter][];
...
arr[counter2] = new string[] {myDataReader["rating"], myDataReader["date"]};

或单独分配每个条目:

arr[counter2,0] = myDataReader["rating"];
arr[counter2,1] = myDataReader["date"]; 

【讨论】:

    【解决方案3】:

    您可以在 ArrayList 中使用 ArrayLists 数据库结果更好,因为它们是动态的(无需声明大小)。 请参阅以下帖子: Multi-dimensional arraylist or list in C#?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-11
      • 1970-01-01
      • 1970-01-01
      • 2013-02-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多