2011-02-03 9 views
16

Ho il dizionario da chiave di stringa voglio ottenere il valore della chiave corrispondente utilizzando LinqOttieni valore dalla chiave utilizzando linq

+3

E se si dispone della chiave, perché nel mondo si desidera utilizzare LINQ per ottenere il valore? Perché non 'var value = myDictionary [" myKey "];'? –

+0

dizionario test = nuovo dizionario (); – PramodChoudhari

+5

La domanda non ha ancora senso. Non importa a Linq, descrivi solo quello che hai già e quale risultato vuoi. Non commettere l'errore di pensare che è necessario utilizzare un determinato strumento o modello quando ciò potrebbe non essere il caso. –

risposta

42

Perché si desidera ottenere un valore da un dizionario utilizzando LINQ? Si può solo ottenere il valore utilizzando:

int value = dictionary[key]; 

Si potrebbe usare Single, ma è del tutto inutile e più codice:

var keyValuePair = dictionary.Single(x => x.Key == key); 
int value = keyValuePair.Value; 
+2

Sono d'accordo. Usando LINQ per questo si getta la prestazione O (1) per O (N). Totalmente inutile. – Enigmativity

+8

Perché ho l'orribile sensazione che il tuo esempio di Linq sia appena entrato in qualche codice di produzione? –

+1

@Quick Joe Smith - Lo so. Penso di essere morto un po 'dentro. – GenericTypeTea

12

Perché utilizzare Linq per qualcosa che è incorporato?

var val = myDict[key]; 

utilizzare LINQ in cui ha senso (collezioni di interrogazione), non per qualcosa che è già ben gestita dai Dictionary classi.

+0

quindi cosa c'è di sbagliato in LINQ. Un grosso problema se è più lunga la sintassi, è lì per estendere con LINQ più o diff. La prossima volta e facile da leggere. Certo, l'accesso tramite chiave con [] è il minimo, ma a chi importa in questo caso. Quindi LINQ sta interrogando più lentamente un dizionario che dici? Qualcuno ha fatto dei test per dimostrarlo? – PositiveGuy

+0

@CoffeeAddict - Il mio punto è che LINQ non è la risposta per tutto. Alcune cose, come gli indicizzatori, sono caratteristiche del linguaggio che dovrebbero essere usate invece di aggirarle usando LINQ. – Oded

+0

Sono d'accordo non è sempre la risposta, ma è molto utile per un sacco. Mi piacerebbe vedere un confronto delle prestazioni tra gli indicizzatori e LINQ – PositiveGuy

0

restituisce il valore stringa in questo caso particolare.

Disctionary<int, string> CustomValues = new Dictionary<int, string>(); 
    CustomValues[int]; //CustomValues[key]; 
Problemi correlati