繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM