gpt4 book ai didi

c# - 根据值删除字典中的项目

转载 作者:IT王子 更新时间:2023-10-29 03:48:46 25 4
gpt4 key购买 nike

我有一个 Dictionary<string, string> .

我需要查看该字典以查看是否存在基于来自其他地方的输入的值,如果存在则将其删除。

ContainsValue 只是说 true/false 而不是该项目的索引或键。

帮助!

谢谢

编辑:刚发现这个 - 你觉得怎么样?

var key = (from k in dic where string.Compare(k.Value, "two", true) ==
0 select k.Key).FirstOrDefault();

编辑 2: 我也刚刚敲了这个可能有用

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

最佳答案

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

如果您尝试删除单个值,如何定义要删除的值?

查询值时没有取回键的原因是字典可能包含多个与指定值配对的键。

如果你想删除相同值的所有匹配实例,你可以这样做:

foreach(var item in dic.Where(kvp => kvp.Value == value).ToList())
{
dic.Remove(item.Key);
}

如果你想删除第一个匹配的实例,你可以查询找到第一个项目并删除它:

var item = dic.First(kvp => kvp.Value == value);

dic.Remove(item.Key);

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

关于c# - 根据值删除字典中的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1636885/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com