Возможно ли получить элемент из словаря, используя строку

#c# #dictionary

#c# #dictionary

Вопрос:

У меня есть словарь, из которого я хочу во время выполнения получить элемент из него, используя параметр, который был передан.

 var field = @"['IconDescription'].Value";

var dictionary = (defaultOutcome).ToDictionary(xs => xs.Field);

dictionary   field;
  
 var field = @"['IconDescription'].Value";

var dictionary = (defaultOutcome).ToDictionary(xs => xs.Field);

  

Итак, мне нужно получить элемент с ключевым IconDescription из словаря и получить его свойство Value, аналогичное следующему результату:

 
dictionary["IconDescription"].Value
  

Комментарии:

1. Уже есть два голоса, чтобы закрыть ваш вопрос за то, что он неясен. Если словарь имеет тип ключа string , то вы можете просто обратиться к словарю как dictionary["Key"] , который вернет соответствующее значение или выдаст исключение. Я чувствую, что это не то, о чем вы спрашиваете. Если вы хотите использовать строку для направления этого, вам придется разобрать строку самостоятельно.

2. Мне нужно получить ключ, используя переменную field (это будет параметр в моем методе), и он изменится

3. Откуда берется «поле»? Я имею в виду, почему невозможно просто передать ключ? Конечно, с помощью регулярных выражений можно извлечь ключ из field , но причина для этого остается загадкой.

4. Вам нужно разобрать @»[‘IconDescription’].Value» и получить из этого описание имени ключа IconDescription?

5. @SvetlanaMeleshkina, да, это то, чего я хочу. Какое это поле мне нужно, описание значка элемента и его значение

Ответ №1:

Попробуйте эту функцию для синтаксического анализа вашего параметра

 private string Parse(string input)
{
    Regex regex = new Regex("^(\[\')(\w )(\'\]\.Value)");
    var match = regex.Match(input);
    return match.Success ? match.Groups[2].ToString() : string.Empty;
}