我在下面有这个函数,我正在尝试做的是连接到数据库,运行查询并将结果放在List中,然后返回列表。这就是我到目前为止所提出的,
public class AirportClass
{
private string connectionString;
private SqlConnection connection;
private SqlCommand command;
private Dictionary<string, List<string>> items;
public AirportClass()
{
connectionString = @"Server=server;database=database;uid=username;pwd=password;";
}
public Dictionary<string, List<string>> getListItems()
{
items = new Dictionary<string, List<string>>();
connection = new SqlConnection(connectionString);
command = new SqlCommand("SELECT * FROM Table");
command.Connection = connection;
connection.Open();
SqlDataReader dataReader = command.ExecuteReader();
while (dataReader.Read())
{
string data = dataReader[0].ToString();
items.Add(data);
}
connection.Close();
return items;
}
}
我已经运行了调试器,我可以看到我正在获取连接并且数据正在返回,我只是在将项目放入列表时遇到问题。我添加items.Add(data)
时出现错误,说“方法”没有重载“添加”需要1个参数....有人可以帮助我吗?
答案 0 :(得分:2)
因为items
不是List<T>
,它是Dictionary
如果要添加到词典,则需要提供key
(第一个参数)和value
(第二个参数)
由于您的value
字典类型为List<String>
,因此第二个参数必须为List<string>
的内容
items.Add(dataReader[0].ToString(), dataReader.ToList().convertAll(itm => itm.toString()));
答案 1 :(得分:2)
使用列表而不是词典:
public class AirportClass
{
private string connectionString;
private SqlConnection connection;
private SqlCommand command;
private List<string> items;
public AirportClass()
{
connectionString = @"Server=server;database=database;uid=username;pwd=password;";
}
public List<string> getListItems()
{
items = new List<string>();
connection = new SqlConnection(connectionString);
command = new SqlCommand("SELECT * FROM Table");
command.Connection = connection;
connection.Open();
SqlDataReader dataReader = command.ExecuteReader();
while (dataReader.Read())
{
string data = dataReader.GetValue(0).ToString();
items.Add(data);
}
connection.Close();
return items;
}
}
答案 2 :(得分:1)
您需要为字典提供密钥和值。