基于值删除字典中的项

我有一本字典<字符串,字符串&gt

我需要查看字典,看看是否存在基于其他地方输入的值,如果存在,请删除它

ContainsValue只表示true/false,而不是该项的索引或键

救命啊

谢谢

编辑:刚找到这个-你怎么看

var key=(从dic中的k开始,其中string.Compare(k.Value,“two”,true)==
0选择k.Key).FirstOrDefault();

编辑2:我也刚刚完成了这个,可能会有用

foreach(myDic中的KeyValuePair<string,string>kvp)
{
if(myList.Any(x=>x.Id==kvp.Value))
myDic.Remove(kvp.Key);
}

您是要删除单个值还是所有匹配值

如果试图删除单个值,如何定义要删除的值

在查询值时无法获取键的原因是,字典可能包含多个与指定值成对的键

如果要删除相同值的所有匹配实例,可以执行以下操作:

foreach(dic.Where(kvp=>kvp.Value==Value.ToList()中的变量项)
{
dic.移除(项目.钥匙);
}

如果您希望删除第一个匹配实例,您可以查询以查找第一个项目,然后仅删除该项目:

var item=dic.First(kvp=>kvp.Value==Value);
dic.移除(项目.钥匙);

注意:需要调用ToList()将值复制到新集合。如果未进行调用,循环将修改它正在迭代的集合,导致在删除第一个值后的下一次尝试迭代时引发异常

发表评论