【问题标题】:Add array to List with specific key使用特定键将数组添加到列表
【发布时间】:2014-02-12 14:57:40
【问题描述】:

我尝试将 string[] 添加到 List

代码:

foreach (int software_id in softwarelist)
{
    String sqlstring = "SELECT SoftwareName, Task_idn_Install, Task_idn_Deinstall, KZ, ParameterFeld FROM TUI_Software WHERE Sw_idn = '" + software_id + "'";
    SqlCommand cmd1 = new SqlCommand(sqlstring, con);
    SqlDataReader result_sw_info = cmd1.ExecuteReader();

    if (result_sw_info.HasRows)
    {
        result_sw_info.Read();

        softwarename = result_sw_info[0].ToString();
        task_idn_install = result_sw_info[1].ToString();
        task_idn_deinstall = result_sw_info[2].ToString();
        indicator = result_sw_info[3].ToString();
        parameter = result_sw_info[4].ToString();

        string[] software_data = new string[] {sw_id, softwarename, task_idn_install, task_idn_deinstall, indicator, parameter };

        softwarelist_insert.Add(software_data);
    }
    result_sw_info.Close();
}

所以 softwarelist_insert 中的键以 0 开头。但是如何在 foreach 中添加带有键 software_id 的 software_data。因为我想用 software_id 来识别列表中的数组。

【问题讨论】:

  • 是的,这只是我找到的一个例子。原代码pdo中使用。
  • 你需要把它放在一个数组中还是你可以创建一个对象来保存软件信息并有一个列表
  • 我也可以创建对象。
  • 如果你想指定任意 id,那么你首先不应该使用 List。

标签: c# arrays arraylist


【解决方案1】:

使用 System.Collections.Generic Dictionary<string, string[]> 而不是 List<string[]>

var softwarelist_insert = new Dictionary<string, string[]>();
...
softwarelist_insert.Add(software_id, software_data);

更好的是,使用强类型对象而不是字符串[]。

public class SoftwareData {
  public string SoftwareName { get; set; }
  public string TaskIdnInstall { get; set; }
  ...
}

然后

var softwarelist_insert = new Dictionary<string, SoftwareData>();
...
var = new SoftwareData {
  SoftwareName = result_sw_info[0].ToString(),
  TaskIdnInstall = result_sw_info[1].ToString(),
}
softwarelist_insert.Add(software_id, data);

【讨论】:

    【解决方案2】:

    您可以创建自己的类型并将数据添加到其中。 首先创建一个这样的类

    public class softwarelist_insert_class
    {
      public string ID {get;set;}
      public List<string>softwarelist_insert{get;set;}
    }
    

    那么就可以创建这个类型的列表变量了

    List<softwarelist_insert_class> variable_name=new List<softwarelist_insert_class>();
    

    然后你可以像这样向它添加数据:

    List<string> software_data = List<string> {sw_id, softwarename, task_idn_install, task_idn_deinstall, indicator, parameter };
    
    variable_name.Add({id,software_data});
    

    【讨论】:

      猜你喜欢
      • 2022-01-14
      • 1970-01-01
      • 1970-01-01
      • 2016-07-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多