C# 如何在c语言中将查询保存到字典中?

C# 如何在c语言中将查询保存到字典中?,c#,mysql,C#,Mysql,我正在使用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_ser

我正在使用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,所以您需要为每一行创建一个新列表,并将其添加到字典中,如下所示:

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,它允许您执行以下操作:

dic
  .Add(
      (int)reader["request_number"],
      new MyValue
      {
          ServiceCategory = reader["service_category"].ToString(),
          ServiceType = reader["service_type"].ToString()
      });

你为什么要那样做?您可以根据数据库中的列名创建具有属性的DTO数据传输对象,并将查询结果绑定到该对象。然后可以返回DTO对象的列表。这将是一个更好的解决方案,而不是让字典复杂化。

你到底为什么要这样做?看起来你已经在把它放到字典里了,那么有什么问题吗?试试这个dic。AddInReader[请求编号],new List{reader[服务类别]。ToString,reader[服务类型]。ToString};谢谢你,伙计。你的评论很有用