2010-08-19 23 views
0

Supposé que j'ai défini mon dict comme ci-dessous.Clés du dictionnaire (Liste <int>) Récupérer dans C#

Dictionary<list<int>, list<string>> d = new Dictionary<List<int>, list<string>>()

Comment puis-je récupérer la clé dict et de la valeur rapidement.

[mise à jour]

Je veux obtenir la clé - le contenu de la liste. J'ai essayé une façon simple comme ci-dessous

List<int> KeysList= new List<int>(d.Keys);

Mais il ne fonctionne pas à la clé complexe sur mon cas.

Puis-je utiliser uniquement le KeyValuePair comme indiqué ci-dessous?

foreach (KeyValuePair<List<int>, List<string>> pair in d) 
{ 
    KeysList= new List<int>(pair.Key); 
} 
+1

Que voulez-vous dire par rapidement? Et qu'est-ce que vous essayez d'accéder? – cordialgerm

+0

@erash. J'ai mis à jour mon chemin rapidement. comme la manière simple de 'd.keys' –

+0

Est-il possible que vous recherchiez' Dictionary '? Cela ferait la dernière ligne 'Liste KeysList = d.Keys;'. – Kobi

Répondre

3

Vous avez un problème potentiel là pour commencer: List<T> ne surcharge pas equals, de sorte que vous auriez à utiliser la exacte même référence clé pour récupérer la valeur d'une clé.

Cela dit, si vous avez cette référence, il est aussi simple que

List<string> value = d[key]; 

ou

List<string> value; 
if (d.TryGetValue(key, out value)) 
{ 
    ... 
} 

Il est assez rare d'avoir un List<T> comme une clé bien - pouvez-vous dire nous plus sur ce que vous essayez de faire? Il pourrait y avoir une meilleure approche.

+0

Pouvez-vous préciser le premier point - que voulez-vous dire par «exactement la même référence clé»? Ne fonctionnerait-il pas avec deux références à la même liste, ou avec des références de 'Dictionary.Keys'? – Kobi

+0

Je ne peux pas essayer 'List value = d [clé];'. Ça ne marche pas sur mon cas. C'est un appel de fonction, je ne connais pas la clé exactement. BTW, j'ai mis à jour mon entrée ci-dessus. –

+1

@Nano: Votre question n'est toujours pas claire du tout. Vous parlez de "la" 'Liste ' mais le point d'un dictionnaire est que * chaque touche * est une 'Liste '. Lequel vous intéresse? Si vous pouviez fournir un exemple court mais * complet * de ce dont vous parlez, il serait beaucoup plus facile de vous aider. –

Questions connexes