How to create a ListDictionary in C#?

A ListDictionary in C# is a specialized collection class from the System.Collections.Specialized namespace that implements IDictionary using a singly linked list. It is optimized for small collections (typically 10 items or fewer) and offers better performance than Hashtable for small datasets.

The ListDictionary class is ideal when you need a dictionary-like collection with a small number of elements, as it has lower memory overhead compared to hash-based collections.

Syntax

Following is the syntax for creating a ListDictionary −

ListDictionary dictionary = new ListDictionary();

To add key-value pairs to the ListDictionary −

dictionary.Add(key, value);

Creating a Basic ListDictionary

Here's how to create and populate a ListDictionary with vehicle types −

using System;
using System.Collections;
using System.Collections.Specialized;

public class Demo {
   public static void Main(){
      ListDictionary dict = new ListDictionary();
      dict.Add("1", "SUV");
      dict.Add("2", "Sedan");
      dict.Add("3", "Utility Vehicle");
      dict.Add("4", "Compact Car");
      dict.Add("5", "SUV");
      dict.Add("6", "Sedan");
      dict.Add("7", "Utility Vehicle");
      dict.Add("8", "Compact Car");
      dict.Add("9", "Crossover");
      dict.Add("10", "Electric Car");
      
      Console.WriteLine("ListDictionary elements...");
      foreach(DictionaryEntry d in dict){
         Console.WriteLine(d.Key + " " + d.Value);
      }
      
      Console.WriteLine("\nIs the ListDictionary having fixed size? = " + dict.IsFixedSize);
      Console.WriteLine("If ListDictionary read-only? = " + dict.IsReadOnly);
      Console.WriteLine("Is ListDictionary synchronized = " + dict.IsSynchronized);
      Console.WriteLine("The ListDictionary has the key K? = " + dict.Contains("K"));
      Console.WriteLine("The ListDictionary has the key 9? = " + dict.Contains("9"));
   }
}

The output of the above code is −

ListDictionary elements...
1 SUV
2 Sedan
3 Utility Vehicle
4 Compact Car
5 SUV
6 Sedan
7 Utility Vehicle
8 Compact Car
9 Crossover
10 Electric Car

Is the ListDictionary having fixed size? = False
If ListDictionary read-only? = False
Is ListDictionary synchronized = False
The ListDictionary has the key K? = False
The ListDictionary has the key 9? = True

ListDictionary Operations

This example demonstrates various ListDictionary operations including copying, clearing, and comparing collections −

using System;
using System.Collections;
using System.Collections.Specialized;

public class Demo {
   public static void Main(){
      ListDictionary dict1 = new ListDictionary();
      dict1.Add("A", "Books");
      dict1.Add("B", "Electronics");
      dict1.Add("C", "Smart Wearables");
      dict1.Add("D", "Pet Supplies");
      dict1.Add("E", "Clothing");
      dict1.Add("F", "Footwear");
      
      Console.WriteLine("ListDictionary1 elements...");
      foreach(DictionaryEntry d in dict1){
         Console.WriteLine(d.Key + " " + d.Value);
      }
      
      ListDictionary dict2 = new ListDictionary();
      dict2.Add("1", "One");
      dict2.Add("2", "Two");
      dict2.Add("3", "Three");
      dict2.Add("4", "Four");
      dict2.Add("5", "Five");
      dict2.Add("6", "Six");
      
      Console.WriteLine("\nListDictionary2 elements...");
      foreach(DictionaryEntry d in dict2){
         Console.WriteLine(d.Key + " " + d.Value);
      }
      
      Console.WriteLine("Count of key/value pairs in Dictionary 2 = " + dict2.Count);
      
      ListDictionary dict3 = new ListDictionary();
      dict3 = dict2;
      Console.WriteLine("\nIs ListDictionary3 equal to ListDictionary2? = " + (dict3.Equals(dict2)));
      
      dict3.Clear();
      Console.WriteLine("Count of key/value pairs in Dictionary 3 = " + dict3.Count);
   }
}

The output of the above code is −

ListDictionary1 elements...
A Books
B Electronics
C Smart Wearables
D Pet Supplies
E Clothing
F Footwear

ListDictionary2 elements...
1 One
2 Two
3 Three
4 Four
5 Five
6 Six
Count of key/value pairs in Dictionary 2 = 6

Is ListDictionary3 equal to ListDictionary2? = True
Count of key/value pairs in Dictionary 3 = 0

Key Properties and Methods

ListDictionary provides several useful properties and methods −

  • Count − Gets the number of key-value pairs in the ListDictionary

  • Keys − Gets a collection containing the keys in the ListDictionary

  • Values − Gets a collection containing the values in the ListDictionary

  • Add(key, value) − Adds an entry with the specified key and value

  • Contains(key) − Determines whether the ListDictionary contains a specific key

  • Remove(key) − Removes the entry with the specified key

  • Clear() − Removes all entries from the ListDictionary

When to Use ListDictionary

Use ListDictionary When Use Hashtable/Dictionary When
Collection has 10 or fewer items Collection has more than 10 items
Memory usage is a concern Lookup performance is critical
Simple key-value storage needed Complex operations required

Conclusion

ListDictionary in C# is an efficient choice for small collections of key-value pairs, offering better performance and lower memory overhead than hash-based collections when dealing with 10 or fewer items. It provides all standard dictionary operations while maintaining the order of insertion.

Updated on: 2026-03-17T07:04:36+05:30

136 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements