Найдите ключ в NameValueCollection

Я пытаюсь найти ключ в коллекции namevalue. Если ключ найден, то следующий фрагмент кода должен выполняться, иначе нет.

Мой Web.config имеет следующую конфигурацию:

  <Dropdownvalue>
    <add key="5" value="Yes" />
    <add key="8" value="No" />
    <add key="9" value="Maybe" />
  </Dropdownvalue>

Мой код:

public string getMyId(int MyId)
{
    NameValueCollection colMaster = (NameValueCollection)ConfigurationManager.GetSection("Dropdownvalue");

    if (colMaster[MyId] != null)
    {
        //execute code
    }
}

Когда MyId = 9, я получаю ошибку ниже по очевидной причине, что он пытается получить 9-ю запись вместо сравнения MyId с ключом 9.

System.ArgumentOutOfRangeException: 'Index was out of range. 

Я знаю, что приведенный ниже код будет работать отлично:

colMaster["9"]

Однако мое значение изменяется динамически, поэтому в моем сценарии это не сработает.

Есть ли способ в namevaluecollection или за его пределами получить доступ к ключам из web.config?


person user1630575    schedule 18.07.2019    source источник
comment
Я чувствую себя таким тупым сейчас. Да, это сработало. Спасибо.   -  person user1630575    schedule 18.07.2019


Ответы (1)


Ваша проблема в том, что MyID не является строкой. Посмотрите на следующий код:

    static void Main(string[] args)
    {
        var nvc = new NameValueCollection {{"5", "first value"}, {"6", "second value"}, {"9", "third value"}};

        Console.WriteLine(nvc["5"]); // first value
        Console.WriteLine(nvc[1]);   // second value
        Console.WriteLine(nvc[3]);   // index was out of range
    }

nvc[0] напечатает первое значение. Преобразуйте MyID в строку, чтобы он работал.

person Sascha    schedule 18.07.2019