remove specific values from multi value dictionary

Posted by Anthony on Stack Overflow See other posts from Stack Overflow or by Anthony
Published on 2012-10-17T03:29:21Z Indexed on 2012/10/17 23:01 UTC
Read the original article Hit count: 333

Filed under:
|
|

I've seen posts here on how to make a dictionary that has multiple values per key, like one of the solutions presented in this link:

Multi Value Dictionary

it seems that I have to use a List<> as the value for the keys, so that a key can store multiple values.

the solution in the link is fine if you want to add values. But my problem now is how to remove specific values from a single key.

I have this code for adding values to a dictionary:

private Dictionary<TKey, List<TValue>> mEventDict;
    // this is for initializing the dictionary


public void Subscribe(eVtEvtId inEvent, VtEvtDelegate inCallbackMethod)
    {
        if (mEventDict.ContainsKey(inEvent))
        {
            mEventDict[inEvent].Add(inCallbackMethod);
        }
        else
        {
            mEventDict.Add(inEvent, new List<TValue>() { v });
        }
    }
// this is for adding values to the dictionary.
// if the "key" (inEvent) is not yet present in the dictionary,
// the key will be added first before the value

my problem now is removing a specific value from a key. I have this code:

public void Unsubscribe(eVtEvtId inEvent, VtEvtDelegate inCallbackMethod)
    {
        try
        {
            mEventDict[inEvent].Remove(inCallbackMethod);
        }

        catch (ArgumentNullException)
        {
            MessageBox.Show("The event is not yet present in the dictionary");
        }
    }

basically, what I did is just replace the Add() with Remove() . Will this work?

Also, if you have any problems or questions with the code (initialization, etc.), feel free to ask.

Thanks for the advice.

© Stack Overflow or respective owner

Related posts about c#

Related posts about collections