Использование переменной из возвращенного метода list <> - PullRequest
0 голосов
/ 30 марта 2012

надеюсь, на этот раз довольно простой вопрос. У меня есть метод Select в классе соединителя базы данных, который выглядит следующим образом:

  public List <string> [] Select(string mQuery)
{

    //Create a list to store the result
    List<string>[] datalist = new List<string>[1];
    datalist[0] = new List<string>();


    //Open connection
    if (this.OpenConnection() == true)
    {
        //Create Command
        MySqlCommand cmd = new MySqlCommand(mQuery, mConnection);
        //Create a data reader and Execute the command
        MySqlDataReader dataReader = cmd.ExecuteReader();

        //Read the data and store them in the list
        while (dataReader.Read())
        {
            datalist[0].Add(dataReader["id"] + "");

        }

        //close Data Reader
        dataReader.Close();

        //close Connection
        this.CloseConnection();

        //return list to be displayed
        return datalist;
    }
    else
    {
        return datalist;
    }
}

Когда я хочу получить доступ к "datalist", я предполагаю, что я называю это так;

      results = mDB.Select(mQuery);

Но так как возвращаемое значение является списком, нужно ли мне присваивать эту переменную новому списку, например так;?

 List<string>[] results = new List<string>[1];
                       results[0] = new List<string>();
                       results = mDB.Select(mQuery);
                       string result = results[0].ToString();

                       MessageBox.Show(result);

Это окно сообщения просто создает "System.Collections.Generic.List1 (System.String)"

Есть идеи о логике того, что я делаю неправильно?

Ответы [ 2 ]

2 голосов
/ 30 марта 2012

Попробовать не оборачивать свой список в массив?

 List<string> results = new List<string>();
 results = mDB.Select(mQuery);
 string result = results[0].ToString();

 MessageBox.Show(result);

В любом случае, проблема в том, что вы пытались отобразить список, который по умолчанию просто возвращает его тип.Вы должны отображать членов списка, а не сам список.

0 голосов
/ 30 марта 2012

Если вы пытаетесь отобразить содержимое списка, например, через запятую, вы можете сделать что-то вроде этого:

MessageBox.Show(string.Join(",", list));

Причина, по которой вы получаете "Система.Collections.Generic.List1 (System.String) "заключается в том, что ToString для List просто возвращает строковое представление его типа.

Кроме того, как указывали другие, вы должны потерять массив,То, что вы ищете, выглядит примерно так:

public List<string> Select(string mQuery)
{
    //...
}

List<string> list = mDB.Select(mQuery);
MessageBox.Show(string.Join(",", list));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...