使用返回列表中的变量<>方法

时间:2012-03-30 10:07:56

标签: c# list variables methods

这次希望是一个非常简单的问题。我在数据库连接器类中有一个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 个答案:

答案 0 :(得分:2)

尝试不将列表包装在数组中?

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

 MessageBox.Show(result);

无论哪种方式,问题是你试图显示一个列表,默认情况下只返回它的类型。您应该显示列表的成员,而不是列表本身。

答案 1 :(得分:0)

如果您要执行的操作是显示列表中的内容,例如以逗号分隔的方式,您可以这样做:

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

您获得“System.Collections.Generic.List1(System.String)”的原因是ToString的{​​{1}}只返回其类型的字符串表示。

另外,正如其他人所指出的,你应该丢失数组。你所追求的是:

List