Un uso de Lookup
podría ser revertir a Dictionary
.
Suponga que tiene una agenda telefónica implementada como un Dictionary
con un montón de nombres (únicos) como claves, cada nombre asociado con un número de teléfono. Pero dos personas con nombres diferentes pueden compartir el mismo número de teléfono. Esto no es un problema para a Dictionary
, que no le importa que dos claves correspondan al mismo valor.
Ahora desea una forma de buscar a quién pertenece un número de teléfono determinado. Construye un Lookup
, agregando todo KeyValuePairs
de su Dictionary
, pero al revés, con el valor como clave y la clave como valor. Ahora puede consultar un número de teléfono y obtener una lista de nombres de todas las personas cuyo número de teléfono es ese. Construir un archivo Dictionary
con los mismos datos los eliminaría (o fallaría, dependiendo de cómo lo hiciera), ya
dictionary["555-6593"] = "Dr. Emmett Brown";
dictionary["555-6593"] = "Marty McFly";
significa que la segunda entrada sobrescribe la primera; el Doc ya no aparece en la lista.
Intentando escribir los mismos datos de una manera ligeramente diferente:
dictionary.Add("555-6593", "Dr. Emmett Brown");
dictionary.Add("555-6593", "Marty McFly");
arrojaría una excepción en la segunda línea ya que no puede Add
una clave que ya está en el Dictionary
.
[Por supuesto, es posible que desee utilizar alguna otra estructura de datos única para realizar búsquedas en ambas direcciones, etc. Este ejemplo significa que tiene que regenerar el Lookup
de Dictionary
cada vez que este último cambia. Pero para algunos datos podría ser la solución correcta.]