Think LINQ – .ToDictionary()

There are a number of reasons to use Dictionary<> objects. Aside from the obvious name-value pair uses, Dictionary<> can also be used to essentially “index” an IEnumerable<> of objects. In testing with my colleague, Ryan Davis, we found that for IEnumerable<> collections that we intended to search through on a common field multiple times, converting the IEnumerable<> to a Dictionary<> provided a new gain in performance in most cases. Here’s an example of how this might be used, recalling the PersonEnumerable from an earlier post:

PersonEnumerable pe = new PersonEnumerable();
Dictionary<string, Person> dict = pe.ToDictionary(p => p.Name, p => p);
Person daniel = dict["Daniel"];