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

  • Visual Studio 2022 for Mac Dumps Mono for .NET 6

    Visual Studio for Mac has parted ways with the Mono runtime in the just-published Preview 5, now running on .NET 6.

  • .NET Community Toolkit v8.0 Preview Revamps MVVM Library

    Microsoft announced the first preview of .NET Community Toolkit v8.0.0, which revamps the MVVM library and introduces a new GitHub repo to host the project.

  • Microsoft Details Native Integration of Elastic on Azure

    Microsoft detailed the native integration of Elastic tech with its Azure cloud computing platform, increasing application observability.

  • Java on Visual Studio Code Going Cloud Native

    Cloud-native development figures prominently in a new roadmap published by Microsoft's Java on Visual Studio Code dev team.

Upcoming Events