这个问题从标题本身就应该很清楚了。我需要检查字典中是否存在某个项目并将其从 C# 的字典中删除。唯一的问题是我必须仅使用值项而不是键来执行此操作。
声明如下:
IDictionary<string, myCustomClassObject> clients = new IDictionary<string, myCustomClassObject>();
现在我通过以下方式填写字典:
clients["key"] = myCustomClassObject1;
现在我怎样才能找到并删除这个项目myCustomClassObject1
来自我的词典。我只想使用值项而不是键
这是doabale吗...如果是的话请指导...
问候
编辑:谢谢大家...得到了宝贵的意见...可能有一些思考要做...谢谢
这取决于您需要它如何执行。如果你能接受O(N)
性能,你可以这样做:
foreach(var pair in clients) {
if(pair.Value == expected) {
clients.Remove(pair.Key);
break;
}
}
但是,如果您需要更快的速度,则需要两个字典 - 一个与另一个相反(即由实例键入)。所以添加时,你会这样做:
clientsByKey.Add(key, value);
clientsByValue.Add(value, key);
所以你可以这样做(按值删除):
string key;
if(clientsByValue.TryGetValue(value, out key)) {
clientsByValue.Remove(value);
clientsByKey.Remove(key);
}
或类似(按键删除):
Foo value;
if(clientsByKey.TryGetValue(key, out value)) {
clientsByValue.Remove(value);
clientsByKey.Remove(key);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)