2011-01-26 9 views
5

Declaro diccionario de la siguiente manera:Cómo encontrar la clave mínimo en el diccionario

private Dictionary<int, touchInformation> touchDictionary = new Dictionary<int, touchInformation>(); 

Y utilizado de la siguiente manera:

touchDictionary[touchID] = touchObject;

Por lo tanto, touchDictionary mantendrá la clave de touchID. Ahora, trato de encontrar la clave mínima utilizando el diccionario, pero no sé cómo hacerlo. ¿Tienes alguna sugerencia?

Regard, C.Porawat

+0

Podría explicar su caso de uso aquí? ¿Cuál es el beneficio de conocer el min? –

+1

Una forma alternativa de hacerlo es almacenar el valor mínimo "Actual" y en cada agregar/eliminar del diccionario, verifique esto y actualícelo si es necesario. Parará la enumeración de las claves. –

+2

¿Ha considerado si una 'SortedList <,>' u 'SortedDictionary <,> 'es una mejor opción para su colección? http://msdn.microsoft.com/en-us/library/5z658b67.aspx – Ani

Respuesta

17

diccionario tiene una propiedad de llaves que le permite enumerar las llaves dentro del diccionario. Se pueden utilizar los métodos de extensión mínima de LINQ para obtener la clave mínima de la siguiente manera:

int minimumKey = touchDictionary.Keys.Min(); 
+3

Y desafortunadamente, la operación es O (n). No obtiene ninguno de los beneficios de tener un diccionario aquí. –

+2

¿Quizás envuelva su diccionario en una clase que pueda mantener un registro de la clave mínima utilizada para hacer las entradas? –

+3

¡No hay nada en la pregunta original que indique que se trata de una operación sensible al rendimiento! – ColinE

0

Algo así como touchDictionary.Keys.Min(). Solo asegúrese de importar el espacio de nombre System.Linq.

Cuestiones relacionadas