Usando la clase StringDictionary
, este es un método para usar el OrderBy
de LINQ. Asume que tienes .NET 3.5.
var sortedDictionary = dictionary.Cast<DictionaryEntry>().OrderBy(pair => pair.Value);
Usando 2.0, es un poco más complicado. Aquí hay un enfoque usando un delegado de Comparación.
StringDictionary dictionary = new StringDictionary();
dictionary.Add("1", "One");
dictionary.Add("2", "Two");
dictionary.Add("3", "Three");
DictionaryEntry[] sortedDictionary = new DictionaryEntry[dictionary.Count];
dictionary.CopyTo(sortedDictionary, 0);
Comparison<DictionaryEntry> comparison = new Comparison<DictionaryEntry>(delegate (DictionaryEntry obj1, DictionaryEntry obj2) { return ((string)obj1.Value).CompareTo((string)obj2.Value); });
Array.Sort(sortedDictionary, comparison);
Así que el tipo real estaría en la matriz ordenadaDiccionario.
46 segundos ..... – Will
En realidad esto sólo ordenar los valores, no las teclas asociadas también. – SWeko
@Sweko selecciona claves ordenadas por valor (d [k] = valor). – Will