我有一本字典<;字符串,字符串>
我需要查看字典,看看是否存在基于其他地方输入的值,如果存在,请删除它
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()
将值复制到新集合。如果未进行调用,循环将修改它正在迭代的集合,导致在删除第一个值后的下一次尝试迭代时引发异常