Egen ordning på samling av data (nyckel och värde)

Vi behövde visa en samling av data i en egen ordning och varje rad skulle innehålla nyckel samt värde. Värdena skulle gå att få ut i samma ordning som vi la till dem med andra ord.

HashTable fungerar ju inte alls eftersom denna typ av samling sorteras efter de hashade nycklarna. SortedList trodde vi först skulle göra jobbet men, det framgick sen att den alltid sorterar samlingen efter nycklarna.

Efter ha läst på lite om namnrymden Collections och Collections.Specialized så hittade jag en typ av samling som klarade det vi behövde, nämligen NameValueCollection.

Här är ett kodexempel som lagrar kultur-beteckningarna tillsammans med namnet på länderna.

string strOutput=string.Empty;
NameValueCollection nvc = new NameValueCollection();
nvc.Add("sv-SE", "Swedish");
nvc.Add("da-DK", "Danish");
nvc.Add("en-GB", "English");

IEnumerator iEnumerator = nvc.GetEnumerator();
while (iEnumerator.MoveNext())
{
string strCulture = myEnumerator.Current.ToString();
string strLanguage = nvc.GetValues(strCulture)[0];
strOutput+=strLanguage+"<br />";
}

labelOutput.Text=strOutput;

Koden kommer skriva ut länderna i den ordning som de lades till i samlingen, alltså:

Swedish
Danish
English

Några artiklar som hjälpte på vägen

.NET Collection Madness Part 1

.NET Collection Madness Part 2

Hashlist - Hashtable meets ArrayList

Processing multiple string values in a collection

MSDN: NameValueCollection Class