web-dev-qa-db-fra.com

Le dictionnaire C # obtient un item par index

im essayant de faire une méthode qui retourne un nom de carte de mon dictionnaire au hasard.

Mon dictionnaire: Le premier nom défini de la carte qui est une chaîne et le deuxième est la valeur de cette carte, qui est int.

public static Dictionary<string, int> _dict = new Dictionary<string, int>()
    {
        {"7", 7 },
        {"8", 8 },
        {"9", 9 },
        {"10", 10 },
        {"J", 1 },
        {"Q", 1 },
        {"K", 2 },
        {"A", 11 }
    };

Méthode: random est généré aléatoirement.

    public string getCard(int random)
    {
        return Karta._dict(random);
    }

Le problème est donc:

Impossible de convertir de 'int' en 'chaîne'

Quelqu'un m'aide comment dois-je le faire pour obtenir le nom?

25
Jakub Staněk

Ceci retournera la clé de la valeur int générée aléatoirement

public string getCard(int random)
{
    return Karta._dict.FirstOrDefault(x => x.Value == random).Key;
}

Ceci retournera la clé correspondant à l'index int généré aléatoirement

public string getCard(int random)
{
    return Karta._dict.ElementAt(random).Key;
}

Note latérale: que le premier élément du dictionnaire est la clé et le second est la valeur

27
Hadi

Vous pouvez prendre des clés ou des valeurs par index:

int value = _dict.Values.ElementAt(5);//ElementAt value should be <= _dict.Count - 1
string key = _dict.Keys.ElementAt(5);//ElementAt value should be  < =_dict.Count - 1
30
mybirthname

Votre clé est une chaîne et votre valeur est un int. Votre code ne fonctionnera pas car il ne peut pas rechercher l'int aléatoire que vous transmettez. En outre, veuillez fournir le code complet

3
Deepika Dixit