Practical .NET

Convert .NET Framework Lists into Dictionaries

You probably use ToList to convert your LINQ results into Lists. It's almost as easy to convert any collection into a Dictionary whose items you can retrieve by key.

The ToList method, when applied to a LINQ query running against Entity Framework, causes Entity Framework to go out and retrieve all of your objects and convert them into a .NET Framework List collection. Lists are all very good (you can loop through them) but the only way to retrieve a unique item from the List is to run another LINQ query against it.

It might be handier to convert the results of your LINQ query (or any other collection) into a Dictionary where each object is stored under a specific key value. For example, this code defines a dictionary with a key of type string, holding a value of type Salesorder:

Dim soDict As Dictionary(Of String, Salesorder)

To convert an Entity Framework collection into a Dictionary, all you have to do is call the ToDictionary method on the query, passing a lambda expression that specifies what value to use as the key. This example stores each Salesorder object in the Dictionary with the key set to the Salesorder's CustomerId:

soDict = (From so In db.Salesorders
          Select so).ToDictionary(Function(so) so.CustomerId)

Then I just have to write this code:

Dim so As Salesorder
so = soDict("A123")

if I now want to retrieve the Salesorder for customer A123.

About the Author

Peter Vogel is a system architect and principal in PH&V Information Services. PH&V provides full-stack consulting from UX design through object modeling to database design. Peter tweets about his VSM columns with the hashtag #vogelarticles. His blog posts on user experience design can be found at http://blog.learningtree.com/tag/ui/.

comments powered by Disqus

Featured

  • Copilot AI Billing Shock Met with Meters, Caps and Token-Saving Tools

    GitHub is layering spending limits, expanded credit allowances and increasingly granular usage reporting onto Copilot, while Microsoft is reworking Visual Studio and VS Code to expose -- and reduce -- the cost of agentic development.

  • The AI-Powered Software Development Lifecycle

    René van Osnabrugge makes the case that AI's biggest opportunity in software development is not faster coding -- it's reducing the friction everywhere else in the SDLC.

  • Copilot Usage-Based Billing Gets a Token Dashboard

    Microsoft is keeping Visual Studio's new built-in Agent Skills switched off by default while a public dashboard measures whether their performance gains justify the additional tokens they may consume.

  • VS Code 1.129 Introduces Agent Host and Experimental Agents Window Editor

    Visual Studio Code 1.129 adds a dedicated process for running AI agent sessions and an experimental docked editor for reviewing agent-generated changes.

Subscribe on YouTube