namespace E { public class Program { public static void Main(string[] args) { Hashtable ht = new Hashtable(); ht["Carsten"] = "Jensen"; ht["Rasmus"] = "Andersen"; ht["Bo"] = "Bentzen"; ArrayList al = new ArrayList(); foreach(DictionaryEntry k in ht) { al.Add(k); } al.Sort(new KeySort()); foreach(DictionaryEntry de in al) { Console.WriteLine(de.Key + " -> " + de.Value); } al.Sort(new ValSort()); foreach(DictionaryEntry de in al) { Console.WriteLine(de.Key + " -> " + de.Value); } Console.ReadKey(); } } public class KeySort : IComparer { public int Compare(object a, object b) { return ((string)((DictionaryEntry)a).Key).CompareTo((string)((DictionaryEntry)b).Key); } } public class ValSort : IComparer { public int Compare(object a, object b) { return ((string)((DictionaryEntry)a).Value).CompareTo((string)((DictionaryEntry)b).Value); } } }
using System; using System.Linq; using System.Collections.Generic;
namespace E { public class Program { public static void Main(string[] args) { Dictionary<string, string> ht = new Dictionary<string, string>(); ht["Carsten"] = "Jensen"; ht["Rasmus"] = "Andersen"; ht["Bo"] = "Bentzen"; var q1 = from k in ht.Keys orderby k select new KeyValuePair<string, string>(k, ht[k]); foreach(KeyValuePair<string, string> kvp in q1) { Console.WriteLine(kvp.Key + " -> " + kvp.Value); } var q2 = from k in ht.Keys orderby ht[k] select new KeyValuePair<string, string>(k, ht[k]); foreach(KeyValuePair<string, string> kvp in q2) { Console.WriteLine(kvp.Key + " -> " + kvp.Value); } Console.ReadKey(); } } }
Jeg bruger VS2005 og Framework 2.0, og bruger altså dit midterste eksempel. Og det virker jo rigtigt godt - men de der ikke en nemmere måde end at smide entriesne fra HashTablen ind i et ArrayList for at kunne sortere? Findes der f.eks. ikke et Dictionary som kan sortere på value direkte vha. IComparer?
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.