Результат команды SQL для словаря С#.NET 2.0
У меня есть простой SQL-запрос (с использованием SqlCommand, SqlTransaction) в .NET 2.0, который возвращает таблицу пар целых строк (ID, Name). Я хочу получить эти данные в словаре, например Dictionary<int, string>
.
Я могу получить результат в DataTable, но даже итерации по нему, я не уверен, как делать ввод и все такое. Я чувствую, что это должна быть общая проблема, но я не нашел хороших решений.
Спасибо заранее.
Ответы
Ответ 1
Вы можете попробовать подобный подход, настроенный на то, что вы в настоящее время перебираете ваши результаты:
Dictionary<int, string> dictionary = new Dictionary<int, string>();
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
using (SqlCommand command = new SqlCommand(queryString, connection))
{
using (SqlDataReader reader = command.ExecuteReader())
{
while (reader.Read())
{
dictionary.Add(reader.GetInt32(0), reader.GetString(1));
}
}
}
}
// do something with dictionary
метод SqlDataReader.GetInt32 и метод SqlDataReader.GetString будет представлять индексы столбца ID
и Name
соответственно.
Ответ 2
Вы можете вернуть его как DataReader и построить словарь с помощью linq:
Dictionary<int, string> dictionary;
using (SqlCommand command = new SqlCommand(queryString, connection))
using (SqlDataReader reader = command.ExecuteReader()) {
dictionary = reader.Cast<DbDataRecord>()
.ToDictionary(row => (int)row["id"], row => (string)row["name"]);
}
Ответ 3
Вы можете сделать это.
// Define your Dictionary
IDictionary<int,string> dictionary = new Dictionary<int,string>();
// Read your dataTable
foreach(DataRow row in dataTable.Rows) {
// Add Id and Name respectively
dictionary.Add(int.parse(row[0].ToString()),row[1].ToString())
}
Ответ 4
IDictionary<int, string> dict = new Dictionary<int, string>();
DataTable mydata = new DataTable("hey");
foreach (DataRow item in mydata.Rows)
{
dict.Add(item["id"], item["name"]);
}
Ответ 5
Я не набирал это в visual studio, поэтому вам может потребоваться внести незначительные изменения, чтобы запустить его...
Dictionary(int key,string value) dictionary = new Dictionary<int key,string value>();
foreach(DataRow row in DataTable.Rows)
{
//null check??
dictionary.add(Convert.toInt(row[0]),row[1].toString());
}
попробуйте это... посмотрите, помогает ли это.