2010-11-14 16 views

risposta

16

Se si conosce la chiave è nel dizionario:

value = dictionary[key]; 

Se sei non sono sicuro:

dictionary.TryGetValue(key, out value); 
+0

@ Joe..Grazie per l'aiuto – Ananth

2

Non riesci a fare qualcosa di simile:

var value = myDictionary[i];?

+0

@Serg. .Grazie per l'aiuto – Ananth

3
var stringValue = dictionary[key]; 
+0

@ Zerkms Grazie .... – Ananth

8

Cosa intendi per migliore?

questo è il modo standard di per accedere Dictionary valori chiave:

var theValue = myDict[key]; 

Se la chiave non esiste, questo sarà un'eccezione, quindi si consiglia di vedere se esiste si chiave prima di ottenere esso (non thread-safe):

if(myDict.ContainsKey(key)) 
{ 
    var theValue = myDict[key]; 
} 

in alternativa, è possibile utilizzare myDict.TryGetValue, anche se questo ha richiesto l'utilizzo di un parametro al fine di ottenere il valore.

+0

Invitiamoci l'un l'altro - sarà equo almeno))) – zerkms

+4

myDict.TryGetValue è più efficiente in quanto ha bisogno solo di calcolare il tasto una volta, a differenza di Contains seguito da un index che lo fa due volte. – Martin

+0

@ Martin: Scommetto che l'operazione di ricerca della chiave è 'O (1)', quindi non devi preoccuparti. Ad ogni modo, +1 – zerkms

2
string value = dictionary[key]; 
1

Dictionary.TryGetValue è il modo più sicuro o utilizzare indicizzatore dizionario come altri suggerito ma ricordatevi di prendere KeyNotFoundException

+0

@ Comic..Grazie per l'aiuto – Ananth

1

Beh, io non sono qu sei sicuro di quello che stai chiedendo qui, ma credo che riguardi un dizionario?

È abbastanza semplice ottenere il valore di stringa se si conosce la chiave.

string myValue = myDictionary[yourKey]; 

Se si desidera utilizzare come un indicizzatore (se questo dizionario è in una classe), è possibile utilizzare il seguente codice.

public class MyClass 
{ 
    private Dictionary<string, string> myDictionary; 

    public string this[string key] 
    { 
    get { return myDictionary[key]; } 
    } 
} 
4

Se si desidera eseguire una query contro una collezione Dictionary, è possibile effettuare le seguenti operazioni:

static class TestDictionary 
{ 
    static void Main() { 
     Dictionary<int, string> numbers; 
     numbers = new Dictionary<int, string>(); 
     numbers.Add(0, "zero"); 
     numbers.Add(1, "one"); 
     numbers.Add(2, "two"); 
     numbers.Add(3, "three"); 
     numbers.Add(4, "four"); 

     var query = 
      from n in numbers 
      where (n.Value.StartsWith("t")) 
      select n.Value; 
    } 
} 

È inoltre possibile utilizzare la proprietà n.Key in questo modo

var evenNumbers = 
     from n in numbers 
     where (n.Key % 2) == 0 
     select n.Value; 
Problemi correlati