Нужно искать ключ, используя строку в классе Dictionary <TKey, TValue> - PullRequest
0 голосов
/ 14 июля 2010

Мне нужно использовать список, извлеченный из SQL, список построен из

 Dictionary<Int32, String> measurementTypes = this.GetIndicatorTypes(MeasurementTypeFilter.All);

- это способ получить ключ, используя строку. Что-то вроде

TypeID = measurementTypes.contains("GEN");

Ответы [ 3 ]

3 голосов
/ 14 июля 2010

Ну, это будет медленно (то есть O (n)), но вы можете сделать:

var keys = measurementTypes.Where(pair => pair.Value == "GEN")
                           .Select(pair => pair.Key);

Это даст вам последовательность пар, которые имеют заданныйзначение.Там может быть 0, 1 или много совпадений.Оттуда вы можете выбрать первый соответствующий ключ и т. Д. - все, что вам нужно.Использование First или Single будет уместным, если вы думаете, что будет хотя бы один или точно один;FirstOrDefault вернет 0, если не было совпадений, что может не подходить для вас, если 0 также может быть действительным ключом.

0 голосов
/ 14 июля 2010

Вы можете использовать LINQ, чтобы помочь вам там.

TypeID = measurementTypes.Where(kvp => kvp.Value == "GEN")
                         .Select(kvp => kvp.Key)
                         .FirstOrDefault()
0 голосов
/ 14 июля 2010
TypeID = measurementTypes.Values.Where(v => v.Equals("GEN")).FirstOrDefault();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...