快速批量更新字典
|
我有一个
Dictionary<int, int>
,并想根据它们的当前值一次更新所有某些元素,例如将所有值为10的元素更改为值为14或类似的值。
我以为使用LINQ / lambda东西会很容易,但是似乎并不像我想的那么简单。我当前的方法是这样的:
List<KeyValuePair<int, int>> kvps = dictionary.Where(d => d.Value == oldValue).ToList();
foreach (KeyValuePair<int, int> kvp in kvps)
{
dictionary[KeyValuePair.Key] = newValue;
}
问题在于dictionary
非常大(成千上万个元素),并且我在循环中运行此代码数千次,因此它的运行速度非常慢。肯定有更好的办法...
没有找到相关结果
已邀请:
5 个回复
厦惫
门锑腺潮
这种情况将需要versions4ѭ和
的多个版本,以允许将所有键都更改为相同的值,将一组键中的仅一个键更改为新值,删除具有相同值的所有键,并从值集中仅删除一个键。在需要时为这些场景编写代码应该不难。
苦诫
嫩昧竞莫
您不是按值查找键(就像其他人提供的那样)。 相反,按定义,
现在将返回等于
的单个键(如果字典中存在的话)。因此,整个代码应简化为
很快现在,我有点担心这确实不是OP的意图,而是他所写的。因此,如果现有代码可以满足他的要求,那么他现在将拥有一个高性能的版本:)
香腔弥胯瓤
我很确定您可以直接更新kvp,只要密钥不变