我正在尝试对KeyValuePair进行更改,并从another post I found得到此代码:
var keysToModify = this.Properties
.Where(k => k.Key == propertyName)
.ToList();
foreach (var key in keysToModify)
{
this.Properties[key] = newValue;
}
但是我的关键字段是字符串而不是int。在这种情况下,我需要做些什么才能更新KeyValuePair?
编辑:我的KeyValuePair是string,string类型,当我在上面的例子中运行代码时,我收到错误:
keyvaluepair不能分配给参数类型int
答案 0 :(得分:0)
密钥在您的关联问题中也不是整数,它是Customer
。
无论密钥类型是什么,您都应该能够使用相同的通用方法。
这是一个示例代码,例如当密钥是字符串时,另一个问题的接受答案:
// The ToList() call here is important, so that we evaluate all of the query
// *before* we start modifying the dictionary
var keysToModify = CustomerOrderDictionary.Keys
.Where(k => k == "MyString")
.ToList();
foreach (var key in keysToModify)
{
CustomerOrderDictionary[key] = 4;
}
请注意,如果其他答案访问了Id
键的Customer
属性,则可以直接将键与目标字符串进行比较。
另外,请注意,如果您只是更新字典中的单个条目,则不需要循环,您可以直接执行此操作。如果你知道字典字典有一个带有给定键的条目,或者不介意创建一个新条目,那么只需使用:
CustomerOrderDictionary["MyString"] = 4;
或者,防止创建新条目:
if (CustomerOrderDicionary.ContainsKey("MyString"))
{
CustomerOrderDictionary["MyString"] = 4;
}
答案 1 :(得分:0)
当密钥是字符串时,更新对的值没有特别的魔力 - 它大致相同,你只是使用一个字符串来访问一个值(这代表任何用作密钥的类型,省略任何可能的特点)。
但我能想到的唯一可能就是在这种情况下抛弃你的是循环。然而,循环是迭代实例,并且在这样做时没有暴露添加的“索引”,而是在这种情况下{em} 将是key
。