这次希望是一个非常简单的问题。我在数据库连接器类中有一个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)”
关于我做错的逻辑的任何想法?
答案 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