如何使用该值从字典中删除条目
我有一个词典集合作为bleow:
mydic.addvalue(key1, val1) mydic.addvalue(key2, val1) mydic.addvalue(key3, val1) mydic.addvalue(key4, val2) mydic.addvalue(key5, val2)
从上面的字典我想删除value ==“val1”的所有条目,以便结果只有以下条目:
mydic.addvalue(key4, val2) mydic.addvalue(key5, val2)
我的VB源代码在VS2008上,目标是3.5
基于用户评论的非LINQ答案。
private static void RemoveByValue(Dictionary dictionary, TValue someValue) { List itemsToRemove = new List (); foreach (var pair in dictionary) { if (pair.Value.Equals(someValue)) itemsToRemove.Add(pair.Key); } foreach (TKey item in itemsToRemove) { dictionary.Remove(item); } }
用法示例:
Dictionary dictionary = new Dictionary(); dictionary.Add(1, "foo"); dictionary.Add(2, "foo"); dictionary.Add(3, "bar"); string someValue = "foo"; RemoveByValue(dictionary, someValue);
与其他答案一样的警告:如果您的值通过引用确定相等性,则您需要做额外的工作。 这只是一个基础。
首先需要找到关联值为val1
所有键:
var keysToRemove = mydic.Where(kvp => kvp.Value == val1) .Select(kvp => kvp.Key) .ToArray();
然后你可以删除每个键:
foreach (var key in keysToRemove) { mydic.Remove(key); }
你也可以使用
var x= (from k in mydic where k.Value != val1 select k).ToDictionary(k=>k.key);
x将不具有任何val1
foreach(var key in dict.AllKeys.ToArray()) { if(...) //remove key or something }
它的答案很古老,但这就是我在不创建另一个词典的情况下做同样的事情。
上述就是C#学习教程:如何使用该值从字典中删除条目分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
foreach (KeyValuePair x in MyDic) { if (x.Value == "val1")) { MyDic.Remove(x.Key); } }
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/953554.html