我的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;
答案 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>>
不是好方法。这就像是你用一杯茶来灭火!