How can I create a dictionary with no duplicate values from a dictionary that may have duplicate values?
IDictionary myDict = new Dicti
What do you want to do with the duplicates? If you don't mind which key you lose, just build another dictionary like this:
IDictionary myDict = new Dictionary();
myDict.Add("1", "blue");
myDict.Add("2", "blue");
myDict.Add("3", "red");
myDict.Add("4", "green");
HashSet knownValues = new HashSet();
Dictionary uniqueValues = new Dictionary();
foreach (var pair in myDict)
{
if (knownValues.Add(pair.Value))
{
uniqueValues.Add(pair.Key, pair.Value);
}
}
That assumes you're using .NET 3.5, admittedly. Let me know if you need a .NET 2.0 solution.
Here's a LINQ-based solution which I find pleasantly compact...
var uniqueValues = myDict.GroupBy(pair => pair.Value)
.Select(group => group.First())
.ToDictionary(pair => pair.Key, pair => pair.Value);