【问题标题】:Using a variable from a returned list<> method使用返回的 list<> 方法中的变量
【发布时间】:2012-04-14 00:25:51
【问题描述】:

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

关于我做错的逻辑有什么想法吗?

【问题讨论】:

  • 您不需要执行 ToString()。它已经是一个字符串列表
  • results[0] 也是收藏。 results[0] 包含您的数据库列。您必须选择其中一列

标签: c# list variables methods


【解决方案1】:

如果您想要做的是显示列表的内容,例如逗号分隔的方式,你可以这样做:

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

您得到“System.Collections.Generic.List1(System.String)”的原因是ToStringList 只返回其类型的字符串表示形式。

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

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

List<string> list = mDB.Select(mQuery);
MessageBox.Show(string.Join(",", list));

【讨论】:

    【解决方案2】:

    尽量不要将列表包装在数组中?

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

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

    【讨论】:

      猜你喜欢
      • 2022-07-21
      • 1970-01-01
      • 1970-01-01
      • 2018-05-28
      • 2015-12-16
      • 1970-01-01
      • 2014-05-12
      • 2012-05-17
      • 2016-01-09
      相关资源
      最近更新 更多