C # LINQ Resultado ToDictionary Ayuda
-
21-09-2019 - |
Pregunta
Tengo una expresión lambda que consigue resultados de un diccionario.
var sortedDict = (from entry in dctMetrics
orderby entry.Value descending
select entry);
Los tirones de expresión hacia los pares que necesito, puedo verlos en modo de depuración del IDE.
¿Cómo convierto esto de nuevo un diccionario del mismo tipo que la fuente? Sé TElement de sortedDict es un KeyValuePair, pero estoy teniendo problemas para entender plenamente la sintaxis del método de extensión ToDictionary. También probé foreach'ing el resultado var a trozos construir un nuevo diccionario, pero fue en vano.
¿Hay algo como esto (la funcionalidad del reloj):
var results = (from entry in dictionary
orderby entry.Value descending
select entry);
Dictionary<string,float> newDictionary = results as (Dictionary<string,float>);
Solución
Puede hacerlo de esta manera:
var newDictionary = results.ToDictionary(r => r.Key, r => r.Value);
Leer que a medida "para cada par de resultados, agregar ese elemento al nuevo diccionario, en el que se produjo la tecla que la clave del par, y el valor se produce como el valor del par."
Además, sólo se basa en el código de ejemplo - que debe tener en cuenta que un Dictionary<T, U>
se implementa como una tabla hash, por lo que no mantendrá el orden de los elementos que puso en él. Considere el uso de un SortedDictionary
o una SortedList
lugar si necesita un mapa ordenado.