c# - 按值更改字典键

标签 c# .net

如何在字典中按值更改键?

我有这样的代码:

public Dictionary<string, int> Groups = new Dictionary<string, int>();
Groups.Add("apple", 0);

我需要这样做:

Groups.Update("0") = "pear"

最佳答案

您很可能不想这样做。这里有一些变量:

  1. 之前的键值对会发生什么情况? apple 会被 pear 改变吗?

  2. 如果pear已经存在怎么办?它的值会发生什么变化?

  3. 如果您有多个具有相同值的键(例如, 苹果 => 0橙色 => 0Update("0") = "pear" 会尝试将两个键设置为 pear,这是不可能的,其中一个会消失

如果您仍然确定要执行此操作,则只需遍历 KeyValuePair 并找到 Value0 的项目即可。然后删除其 Key 并添加新的 key => value 对以及新的 key 和旧的 value。

var key = "";
foreach (var item in dictionary)
{
    if (item.Value == "desired_value")
    {
        key = item.Key
        break;
    }
}

dictionary.Remove(key);
dictionary.Add(newKey, "desired_value");

关于c# - 按值更改字典键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33842277/

相关文章:

c# - 使用 Winforms (C#) 连接 SQL Server 2008 Express

.net - 将 OrderedDictionary 转换为 Dictionary<string, string> 的更好方法

c# - 服务器不接受在 HttpClientHandler 上设置的证书

c# - 如何安全地处理 AES “Key” 和 “IV” 值

.net - 代码契约 Vs。对象初始值设定项 (.net 4.0)

c# - 远程服务器返回错误: (401) Unauthorized Error occured when i try to download file via Web Client

c# - 集合中集合的 Linq where 子句

c# - 我需要使用 opencvsharp 识别图像中的文本

c# - T 的通用存储库过滤器数据

.net - .NET上的线程安全阻止队列实现