Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Add Key in Dictionary dynamically

Below is the code where key is being hard-coded in Dictionary

var datalist = new List<IDictionary<string, string>>();

for (var i = 0; i < dt.Rows.Count; ++i)
{
  var data = new Dictionary<string, string>()
  {
      { "ID",     Convert.ToString(dt.Rows[i]["ID"]) },
      { "STATUS", Convert.ToString(dt.Rows[i]["Name"]) },
      { "TYPE",   Convert.ToString(dt.Rows[i]["TYPE"]) }
  };

  datalist.Add(data);
}

Now, instead of hard-coding the keys like ID, STATUS, etc, I want to add it from my string array containing the values below

string[] arrNames = ConfigurationManager.AppSettings["NameKey"].Split(',');

How can I traverse arrNamesto add keys in Dictionary and then add in List?

like image 583
Lara Avatar asked Dec 07 '25 04:12

Lara


2 Answers

Iterate through the collection of names:

var datalist = new List<IDictionary<string, string>>();

string[] arrNames = ConfigurationManager.AppSettings["NameKey"].Split(',');

for (var i = 0; i < dt.Rows.Count; ++i)
{
    var data = new Dictionary<string, string>();

    foreach (var name in arrNames)
    {
        data[name] = Convert.ToString(dt.Rows[i][name]);
    }

    datalist.Add(data);
}
like image 112
Matheus Lemos Avatar answered Dec 08 '25 18:12

Matheus Lemos


your code should look something like this

var datalist = new List<IDictionary<string, string>>();
string[] arrNames = Convert.ToString(ConfigurationManager.AppSettings["NameKey"]).Split(',');

if (arrNames.Length == 3)
{
  for (var i = 0; i < dt.Rows.Count; ++i)
  {
    var data = new Dictionary<string, string>()
    {
        { arrNames[0], Convert.ToString(dt.Rows[i][arrNames[0]]) },
        { arrNames[1], Convert.ToString(dt.Rows[i][arrNames[1]]) },
        { arrNames[2], Convert.ToString(dt.Rows[i][arrNames[2]]) }
    };

     datalist.Add(data);
  }
}
like image 20
Karthik Ganesan Avatar answered Dec 08 '25 17:12

Karthik Ganesan



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!