Un uso di Lookup
potrebbe essere quello di invertire a Dictionary
.
Supponiamo di avere una rubrica implementata come Dictionary
con un gruppo di nomi (univoci) come chiavi, ogni nome associato a un numero di telefono. Ma due persone con nomi diversi potrebbero condividere lo stesso numero di telefono. Questo non è un problema per a Dictionary
, a cui non importa che due chiavi corrispondano allo stesso valore.
Ora vuoi un modo per cercare a chi appartiene un determinato numero di telefono. Costruisci un Lookup
, aggiungendo tutto KeyValuePairs
dal tuo Dictionary
, ma indietro, con il valore come chiave e la chiave come valore. Ora puoi eseguire una query su un numero di telefono e ottenere un elenco di nomi di tutte le persone il cui numero di telefono è. Costruire un Dictionary
con gli stessi dati eliminerebbe i dati (o fallire, a seconda di come lo hai fatto), dal momento che lo fai
dictionary["555-6593"] = "Dr. Emmett Brown";
dictionary["555-6593"] = "Marty McFly";
significa che la seconda voce sovrascrive la prima - il Doc non è più elencato.
Cercare di scrivere gli stessi dati in un modo leggermente diverso:
dictionary.Add("555-6593", "Dr. Emmett Brown");
dictionary.Add("555-6593", "Marty McFly");
genererebbe un'eccezione sulla seconda riga poiché non è possibile utilizzare Add
una chiave già presente in Dictionary
.
[Ovviamente, potresti voler usare qualche altra singola struttura di dati per fare ricerche in entrambe le direzioni, ecc. Questo esempio significa che devi rigenerare Lookup
da Dictionary
ogni volta che quest'ultima cambia. Ma per alcuni dati potrebbe essere la soluzione giusta.]