¿Cómo obtener la clave y el valor del artículo de OrderedDictionary por índice?cómo obtener la clave de OrderedDictionary en C# por índice?
Respuesta
No hay una forma directa incorporada de hacerlo. Esto se debe a que para un OrderedDictionary
el índice es la clave; si quieres la clave real, entonces necesitas rastrearla tú mismo. Probablemente la forma más sencilla es copiar las claves de una colección indexable:
// dict is OrderedDictionary
object[] keys = new object[dict.Keys.Count];
dict.Keys.CopyTo(keys, 0);
for(int i = 0; i < dict.Keys.Count; i++) {
Console.WriteLine(
"Index = {0}, Key = {1}, Value = {2}",
i,
keys[i],
dict[i]
);
}
Usted puede encapsular este comportamiento en una nueva clase que envuelve el acceso a la OrderedDictionary
.
Creé algunos métodos de extensión que obtienen la clave por índice y el valor por clave utilizando el código mencionado anteriormente.
public static T GetKey<T>(this OrderedDictionary dictionary, int index)
{
if (dictionary == null)
{
return default(T);
}
try
{
return (T)dictionary.Cast<DictionaryEntry>().ElementAt(index).Key;
}
catch (Exception)
{
return default(T);
}
}
public static U GetValue<T, U>(this OrderedDictionary dictionary, T key)
{
if (dictionary == null)
{
return default(U);
}
try
{
return (U)dictionary.Cast<DictionaryEntry>().AsQueryable().Single(kvp => ((T)kvp.Key).Equals(key)).Value;
}
catch (Exception)
{
return default(U);
}
}
Si su intención es devolver valores predeterminados si el índice/clave de destino no está en el diccionario, ha elegido una forma costosa de hazlo. Las excepciones son muy caras en relación con las construcciones normales de flujo de control como if/else. Sería mucho mejor verificar los índices fuera de límites y las claves no existentes que confiar en que ocurra una excepción. – Odrade
- 1. Enum C++ Obtener por índice
- 2. Python: obtener la clave de índice en el diccionario
- 3. Java HashMap: ¿Cómo obtener una clave y valor por índice?
- 4. obtener la clave de diccionario por valor
- 5. ¿Cómo obtener char de cadena por índice?
- 6. Obtener valor de la clave de diccionario por el índice de jQuery
- 7. C# Lucene obtener todos los índice
- 8. ¿Cuál es la complejidad de OrderedDictionary?
- 9. Necesidad de OrderedDictionary, ListDictionary e HybridDictionary
- 10. Buscar la clave/índice más alto en una matriz
- 11. Obtener caracteres de cadena por índice - Java
- 12. Cómo obtener la clave y el valor de un TreeMap en un índice particular
- 13. Cómo obtener el valor del índice Enum en C#
- 14. Razones para obtener (ORA-8102 "clave de índice no encontrada")
- 15. ¿Cómo agrupar elementos por índice? C# LINQ
- 16. ¿Cómo obtener elemento hijo por índice en Jquery?
- 17. Obtener clave de la matriz asociativa
- 18. Objective-C bucle for-in Obtener Índice
- 19. ¿Cómo obtener submapas de LinkedHashMap por elemento índice?
- 20. C++ Vectores STL: Obtener iterador del índice?
- 21. Cómo obtener un hijo de PHP DOMDocument por índice
- 22. OrderedDictionary ¿cambio de última hora en .Net 4?
- 23. php: cómo obtener la clave de matriz asociativa del índice numérico?
- 24. Índice Columna clave Índice VS incluida Columna
- 25. ¿Cómo borrar la clave de la matriz y actualizar el índice?
- 26. ¿La clave principal es automáticamente un índice?
- 27. Cómo obtener la clave de un TDictionary?
- 28. Obtener Char de la clave
- 29. obtener document.styleSheets por nombre en lugar de índice?
- 30. obtener el valor por el diccionario clave
yo mismo, pero veo una vez: lista de artículos de pedido = OrderedDictionary; objeto strKey = list [e.OldIndex]; DictionaryEntry dicEntry = new DictionaryEntry(); foreach (DictionaryEntry DE en la lista) if { dicEntry.Key = DE.Key ;, (DE.Value == strKey) dicEntry.Value = DE.Value; } } –
@RedSwan: ¿Dónde está el índice? – testing
El índice es definitivamente * no * la clave; ésas son necesariamente construcciones distintas en un '' OrderedDictionary''. – Conrad