Словарь С# получить элемент по индексу
Я пытаюсь сделать метод, который возвращает название карты из моего словаря в случайном порядке.
Мой словарь: первое определенное имя карты, которое является строкой, а второе - это значение этой карты, которое является 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 }
};
Метод: случайный случайным образом генерируется Int.
public string getCard(int random)
{
return Karta._dict(random);
}
Итак, проблема в том, что:
Невозможно преобразовать из int в строку
Кто-нибудь помочь мне, как я должен сделать это правильно, чтобы получить имя?
Ответы
Ответ 1
Это вернет ключ, соответствующий значению int, сгенерированному случайным образом
public string getCard(int random)
{
return Karta._dict.FirstOrDefault(x => x.Value == random).Key;
}
Это вернет ключ, соответствующий индексу int, сгенерированному случайным образом
public string getCard(int random)
{
return Karta._dict.ElementAt(random).Key;
}
Примечание: что первым элементом словаря является Ключ, а вторым - Значение.
Ответ 2
Вы можете взять ключи или значения для индекса:
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
Ответ 3
Ваш ключ - это строка, а ваше значение - int. Ваш код не будет работать, потому что он не может найти случайный ввод, который вы передадите.
Кроме того, предоставьте полный код