如何附加到我的KeyValuePair?

时间:2012-01-30 18:10:48

标签: c#

我的list显然会返回<string, string>。如何在KeyValuePair中附加第二个字符串并添加从第二个数据库调用中返回的ID?

    // Database calls here

    KeyValuePair<string, string> parks = new KeyValuePair<string, string>();

    DataSet dset = new DataSet();

    var list = new List<KeyValuePair<string, string>>();

    list.Add(new KeyValuePair<string, string>("Select one", "0"));
    foreach (DataRow row in ds.Tables[0].Rows)
    {
        //My database calls including:
         db.AddInParameter(comm, "@pID", DBType.Int32, row[1]);
         dset = db.ExecuteDataSet(comm);
         string attr = dset.Tables[0].Rows[0]["Value"].ToString();
        list.Add(new KeyValuePair<string, string>(row[0].ToString() + " - " + attr, row[1].ToString()));

    }

    return list;

2 个答案:

答案 0 :(得分:2)

KeyValuePair<TKey, TValue>是不可变的。如果您想坚持使用KeyValuePair<string, string>,则必须删除要修改的对,并添加一个包含修改后值的新对。

或者,使用不同的数据类型。如果要修改值,请使用允许修改值的类型。

答案 1 :(得分:2)

KeyValuePair<TKey, TValue>中的

键和值是只读的。您可以使用Dictionary<string,string>为其工作并从中获取KeyValuePair<string, string>

我认为这有效:

// Database calls here
Dictionary<string, string> list = new Dictionary<string, string>();

list.Add("Select one", "0");
foreach (DataRow row in ds.Tables[0].Rows)
{

    list.Add(row[0].ToString(), row[1].ToString());

}

//Another database call that gets back an ID. I want to add/append this ID into my second string in my KeyValue Pair.

return list;

用于附加第二个字符串,您可以使用list["/*Your ID*/"]= YourData;

List<KeyValuePair<TKey, TValue>>不是好方法。这就像是你用一杯茶来灭火!