[英]How can I Store SQL Server Query Results into a List of String?
我想將從數據庫查詢返回的內容存儲到字符串列表中。 我有這個代碼:
List<String> slDistinctUncommonWords = new List<string>();
. . .
slDistinctUncommonWords = GetDistinctWordsFromDB();
. . .
private List<String> GetDistinctWordsFromDB()
{
List<String> slDistinctWords = new List<string>();
try
{
string sQuery = "SELECT DISTINCT UncommonWord " +
"FROM WORDSTATS " +
"ORDER BY UncommonWord";
SqlConnection sqlConnection = new SqlConnection(connection);
SqlCommand cmd = new SqlCommand(sQuery, sqlConnection);
sqlConnection.Open();
slDistinctWords = (List<String>)cmd.ExecuteScalar();
sqlConnection.Close();
return slDistinctWords;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
return null;
}
}
“slDistinctUncommonWords = GetDistinctWordsFromDB();” 但是,行失敗,“無法將類型為'System.String'的object類型轉換為'System.Collections.Generic.List'1[System.String]' ”。
放入數據表
DataTable dt = new DataTable();
SqlDataAdapter adapter = new SqlDataAdapter(cmd);
adapter.Fill(dt);
List<string> slDistinctWords = dt.AsEnumerable().Select(x => x.Field<string>(0)).Distinct().ToList();
您可以使用ExecuteReader而不是ExecuteScalar ,如以下代碼:
using(SqlDataReader reader = command.ExecuteReader())
{
while (reader.Read())
{
slDistinctWords.Add(reader["UncommonWord"].ToString());
}
}
我希望你覺得這有幫助。
可以將 SqlDataReader 視為 IDataRecord 對象的集合。 所以
var col = new List<String>();
using (var rdr = cmd.ExecuteReader())
{
col = rdr.Cast<IDataRecord>().Select(r => r.GetString(0)).ToList();
}
如果您使用的是 Microsoft SQL 服務器,請嘗試將您的 SQL 查詢語句替換為:
string sQuery = "SELECT DISTINCT CAST(UncommonWord AS VARCHAR(32)) + ',' " +
"FROM WORDSTATS " +
"ORDER BY UncommonWord FOR XML PATH('')";
這有效:
private List<String> GetDistinctWordsFromDB()
{
List<String> slDistinctWords = new List<string>();
try
{
string sQuery = "SELECT DISTINCT UncommonWord " +
"FROM WORDSTATS " +
"ORDER BY UncommonWord";
SqlConnection sqlConnection = new SqlConnection(connection);
SqlCommand cmd = new SqlCommand(sQuery, sqlConnection);
SqlDataReader reader;
sqlConnection.Open();
reader = cmd.ExecuteReader();
while (reader.Read())
{
slDistinctWords.Add(reader.GetString(0));
}
reader.Close();
sqlConnection.Close();
return slDistinctWords;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
return null;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.