Этот вопрос может показаться дублирующим и/или слишком скучным, но я хочу сделать это, используя этот метод.Получить ключ по значению в словаре в C#
Когда пользователь вводит строку в текстовое поле, я хочу получить этот строковый ключ. Поэтому для этого я создал словарь, который имеет n (n < = 15000) уникальных значений. Я хочу получить ключ от этого словаря по значению. Ниже метод хорошо работает:
Dictionary<int, string> artikullar = new Dictionary<int, string>();
int key = (from elem in artikullar where elem.Value == txt_artikul.Text select elem).First().Key;
До этого я пытался использовать метод First()
, чтобы получить ключ:
int key = artikullar.AsParallel().First(new Func<KeyValuePair<int, string>, bool>(val => val == txt_artikul.Text)).Key;
Но он бросает эту ошибку:
Operator '==' cannot be applied to operands of type 'KeyValuePair' and 'string'
Я раньше не использовал этот метод.
Любые полезные комментарии или ответы будут оценены.
Почему вы держите 'Словарь', shoulden't это будет 'Словарь ', если вы выполняете поиск по строке? Кроме того, если у вас одинаковое значение для нескольких клавиш, ваша функция может возвращать разные «клавиши» каждый раз, когда вы запускаете функцию, это приемлемо? –
@ScottChamberlain благодаря быстрой реакции. Ну, значения должны храниться как тип строки и ключей как тип int. Итак, этот синтаксис неверен? Я написал, что ** словарь имеет n (n <= 15000) уникальные значения **. –