[英]How to save query into dictionary in c#?
我正在使用Visual Studio 2012和C#。 我有一个问题:我想将SQL查询的所有结果收集到字典中。
这是我的代码:
Dictionary<int,List<string>> dic = new Dictionary<int, List<string>>();
string query = "select request_number, service_category ,service_type from enugro.enugro_service_requests_info;";
MySqlConnection connec = new MySqlConnection(strcon);
connec.Open();
MySqlCommand cmd = new MySqlCommand(query,connec);
MySqlDataReader reader = cmd.ExecuteReader();
while(reader.Read())
{
dic.Add((int)reader["request_number"], { reader["service_category"], reader["service_type"] });
}
// display result
foreach(var disp in dic)
{
MessageBox.Show(disp.Key.ToString()+"= "+disp.Value.ToString());
}
如您所见,我的SQL查询返回3列以进行检索并将其存储到字典中。 你可以帮帮我吗?
由于字典值的类型为List<string>
,因此您需要为每一行创建一个新列表,并将其添加到字典中,如下所示:
dic
.Add(
(int)reader["request_number"],
new List<string>
{
reader["service_category"].ToString(),
reader["service_type"].ToString()
});
考虑创建一个类来保存每一行所需的信息,并将其用作字典值的类型。 这样的类看起来像这样:
public class MyValue
{
public string ServiceCategory {get;set;}
public string ServiceType {get;set;}
}
然后,您可以使字典的类型为Dictionary<int, MyValue>
,这将允许您执行以下操作:
dic
.Add(
(int)reader["request_number"],
new MyValue
{
ServiceCategory = reader["service_category"].ToString(),
ServiceType = reader["service_type"].ToString()
});
为什么要这么做? 您可以根据数据库中的列名称创建具有属性的DTO(数据传输对象),并将查询结果绑定到该DTO。 然后,您可以返回DTO对象的列表。 这将是更好的解决方案,然后使字典复杂化。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.