diccionario tiene ningún método Sort. Si tenemos que recorrer los contenidos del diccionario en orden ordenado, debemos adquirir por separado los elementos y ordenarlos. Esto se hace con las propiedades Keys and Values y una instancia de List.
claves de ordenación
Este ejemplo resuelve el problema mediante el uso de las teclas de propiedad en el ejemplo Diccionario y, a continuación el método de extensión ToList y el método de instancia Ordenar .
En primer lugar, se crea un diccionario de ejemplo y se completa con el método Agregar ; luego, los métodos ToList y Sort se usan en las claves; finalmente, la lista resultante se buclea mediante el uso de la construcción de foreach-loop . Además, tenga en cuenta que la palabra clave tipeada implícita var es utilizada en todo, para reducir la redundancia sintáctica.
programa que ordena claves en el diccionario [C#]
using System;
using System.Collections.Generic;
using System.Linq;
class Program
{
static void Main()
{
// Create dictionary and add five keys and values.
var dictionary = new Dictionary<string, int>();
dictionary.Add("car", 2);
dictionary.Add("apple", 1);
dictionary.Add("zebra", 0);
dictionary.Add("mouse", 5);
dictionary.Add("year", 3);
// Acquire keys and sort them.
var list = dictionary.Keys.ToList();
list.Sort();
// Loop through keys.
foreach (var key in list)
{
Console.WriteLine("{0}: {1}", key, dictionary[key]);
}
}
}
salida
apple: 1
car: 2
mouse: 5
year: 3
zebra: 0
ordenar los valores
A continuación mostramos cómo ordenar los valores de un diccionario. Vemos un programa de consola que puede compilar en Visual Studio y ejecutar. Agrega claves a un diccionario y luego las ordena por sus valores. Recuerde que las instancias del diccionario no están inicialmente ordenadas de ninguna manera. Utilizamos la palabra clave orderby LINQ en una declaración de consulta.
Programa Cláusula OrdenarPor que ordena Diccionario [C#]
using System;
using System.Collections.Generic;
using System.Linq;
class Program
{
static void Main()
{
// Example dictionary.
var dictionary = new Dictionary<string, int>(5);
dictionary.Add("cat", 1);
dictionary.Add("dog", 0);
dictionary.Add("mouse", 5);
dictionary.Add("eel", 3);
dictionary.Add("programmer", 2);
// Order by values.
// ... Use LINQ to specify sorting by value.
var items = from pair in dictionary
orderby pair.Value ascending
select pair;
// Display results.
foreach (KeyValuePair<string, int> pair in items)
{
Console.WriteLine("{0}: {1}", pair.Key, pair.Value);
}
// Reverse sort.
// ... Can be looped over in the same way as above.
items = from pair in dictionary
orderby pair.Value descending
select pair;
}
}
salida
dog: 0
cat: 1
programmer: 2
eel: 3
mouse: 5
descendente palabra clave
descendente especie
var items = from pair in dictionary
orderby pair.Value descending
select pair;
Ejemplo de salida
mouse: 5
eel: 3
programmer: 2
cat: 1
dog: 0
Este último no es lo mismo. Crea una lista de objetos anónimos en lugar de un diccionario. Puede ser suficiente para el propósito, pero si el Diccionario es necesario en lugar de simplemente conveniente, usaría ToDictionary en su lugar. – tvanfosson
gracias, eso fue muy útil. – Daniel
Lo ejecuté y obtuve la excepción System.StackOverflowException ¿qué está mal? – Daniel