2012-03-30 18 views
0

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

你不需要做ToString()。它已经是字符串列表 – 2012-03-30 10:11:13

+0

结果[0]也是集合。结果[0]包含你的数据库列。您必须选择 – 2012-03-30 10:12:51

+0

Sorted列之一。干杯家伙:D – 2012-03-30 11:30:57

回答

2

请不要将您的列表包装在数组中?

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

MessageBox.Show(result); 

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

0

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

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)); 
相关问题