【发布时间】:2017-01-18 23:24:03
【问题描述】:
使用C# 如何附加到List<string>?我想运行两个单独的 SQL 查询并将两者的结果存储在我的List<string> 中。第一个查询返回
比尔和乔
第二个查询返回
詹姆斯和查尔斯
但我的Console.WriteLine() 只产生Bill 和Joe
为了发生这种情况,我在语法中进行了哪些错误设置?
public static List<string> tempList = new List<string>();
static void Main(string[] args)
{
string qs = "Select Top 2 firstname from thistable";
//
GetFirstSetOfData(qs);
string bc = "Select Top 2 firstname from thattable";
//
GetFirstSetOfData(bc);
foreach (string tumble in tempList)
Console.WriteLine(tumble);
}
private static void GetFirstSetOfData(string query)
{
connection = new SqlConnection(ConnectionString);
{
cmd = new SqlCommand(queryString, connection);
connection.Open();
reader = cmd.ExecuteReader();
while (reader.Read())
tempList.Add(reader.GetValue(0).ToString());
reader.Close();
}
}
【问题讨论】:
-
这不会编译,因为
GetFirstSetOfData无法访问 tempList。在您的实际代码中,tempList是如何定义的? -
对不起,这是一个类变量。让我尽快解决这个问题。
-
谢谢。正如代码所示,这应该可以工作。
tempList仅被实例化一次,因为它是一个引用类型,所以对 GetFirstSetOfData 的两个调用都附加到同一个列表实例。这是假设thattable实际上返回您认为的结果。您可以尝试while (reader.Read()) { var x = reader.GetValue(0).ToString(); Console.WriteLine(x); tempList.Add(x); }来验证查询是否返回了您期望的结果。 -
您还应该尝试隔离该方法。让
GetFirstSetOfData返回一个列表到 main 方法并在那里添加 -
所有好的建议,但如果第二个表有两行,您的代码应该可以工作。您如何检查该方法是否有效读取 James 和 Charles?
标签: c# arrays sqldatareader