SQL命令结果到字典C#.NET 2.0

Joe*_*oel 15 c# sql .net-2.0

我在.NET 2.0中有一个简单的SQL查询(使用SqlCommand,SqlTransaction),它返回一个整数字符串对(ID,Name)表.我想把这些数据放到像这样的字典中Dictionary<int, string>.

我可以将结果导入DataTable,但即使迭代它,我也不确定如何进行打字和所有这些.我觉得这一定是一个常见的问题,但我没有找到任何好的解决方案.

提前致谢.

Ahm*_*eed 15

您可以尝试类似于此的方法,调整为您当前正在循环结果:

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
Run Code Online (Sandbox Code Playgroud)

SqlDataReader.GetInt32方法SqlDataReader.GetString方法将表示IDName列索引,分别.


Gab*_*art 11

您可以将其作为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"]);
}
Run Code Online (Sandbox Code Playgroud)