VB.NET和linQ:如何使用该值从字典中删除条目

use*_*233 1 linq vb.net

我有一个词典集合作为bleow:

mydic.addvalue(key1, val1)
mydic.addvalue(key2, val1)
mydic.addvalue(key3, val1)
mydic.addvalue(key4, val2)
mydic.addvalue(key5, val2)
Run Code Online (Sandbox Code Playgroud)

从上面的字典我想删除值=="val1"的所有条目,以便结果只有以下条目:

mydic.addvalue(key4, val2)
mydic.addvalue(key5, val2)
Run Code Online (Sandbox Code Playgroud)

我的VB源代码在VS2008上,目标是3.5

Ant*_*ram 6

Sub RemoveByValue(Of TKey, TValue)(ByVal dictionary As Dictionary(Of TKey, TValue), ByVal someValue As TValue)

    Dim itemsToRemove = (From pair In dictionary _
                        Where pair.Value.Equals(someValue) _
                        Select pair.Key).ToArray()

    For Each item As TKey In itemsToRemove
        dictionary.Remove(item)
    Next

End Sub
Run Code Online (Sandbox Code Playgroud)

用法:

Dim dictionary As New Dictionary(Of Int32, String)
dictionary.Add(1, "foo")
dictionary.Add(2, "foo")
dictionary.Add(3, "bar")

RemoveByValue(dictionary, "foo")
Run Code Online (Sandbox Code Playgroud)