Member 12478311 Ответов: 3

Как проверить ключевые значения в appsettings


приложение.файл config :

<appSettings>
    <add key="KeyList" value="123,234,345,456"/>
  </appSettings>


Я хочу проверить, существует ли значение "123" в конфигурационном файле в кейлисте.

Ниже приведен мой код c# :

              kk = textBox1.Text;
//kk will be "123"
            keyList = new List<int>();
            if(ConfigurationManager.AppSettings.AllKeys.Contains(kk);
            {
                MessageBox.Show(name);
            }


Что я уже пробовал:

Я не могу его получить.
кто-нибудь может мне помочь

3 Ответов

Рейтинг:
5

David_Wimbley

Итак, я предоставил 2 способа узнать, чего вы хотите. Просмотр любого ключа в appsettings независимо от имени ключа, а затем поиск конкретного значения ключа по имени ключа.

Мои настройки приложений:

<appSettings>
    <add key="KeyList" value="123,234,345,456"/>
    <add key="AnotherSetting" value="123,234,345,456"/>
  </appSettings>



Поиск по всем ключам, чтобы найти любой ключ со значением 123

var allkeys = ConfigurationManager.AppSettings.AllKeys;

            foreach (var key in allkeys)
            {
                var value = ConfigurationManager.AppSettings[key];

                if (value.Contains("123"))
                {
                    Console.WriteLine("My app setting has a value of 123 on key {0}", key);
                }
            }


Выбор ключа по указанному имени и проверка значения.

var specificKey = ConfigurationManager.AppSettings["KeyList"];

            if (!string.IsNullOrEmpty(specificKey) && specificKey.Contains("123"))
            {
                Console.WriteLine("KeyList contains 123");
            }


Затем, если вы уверены,что все ключи в ваших appsettings будут CSV. Вы можете сделать что-то вроде этого, чтобы найти любой ключ, содержащий 123 (не 123456).

var csvKey = ConfigurationManager.AppSettings.AllKeys;

            foreach (var key in csvKey)
            {
                var values = ConfigurationManager.AppSettings[key].Split(',');

                foreach (var item in values)
                {
                    if (item == "123")
                    {
                        Console.WriteLine("My app setting has a value of 123 on key {0}", key);    
                    }
                }
            }


Рейтинг:
2

Karthik_Mahalingam

попробовать это

public bool IsContainsValue(string find)
      {
          bool flag = false;
          foreach (string key in ConfigurationManager.AppSettings.AllKeys)
          {
             string _value = ConfigurationManager.AppSettings[key].ToString();
             if (_value.Contains(find))
             { flag = true; break; }
          }
          return flag;

      }


if (IsContainsValue("123"))
           {

           }


Рейтинг:
17

Mathew Soji

взгляните также на приведенные ниже ссылки .

Класс ConfigurationManager (System.Конфигурация)[^]

Конфигурационный менеджер.Свойство AppSettings (System.Конфигурация)[^]

Пожалуйста, попробуйте ниже .

string  option = "123"; // read from text box
          string KeyName = "KeyList"; // key name as in app.config file

           if (ConfigurationManager.AppSettings.AllKeys.Contains(KeyName))
           {
               //key exist
               String KeyValue = ConfigurationManager.AppSettings[KeyName].ToString();
               if (KeyValue.Trim().Contains(option))
               {
                   //Key value found
                   //MessageBox.Show(name);

               }
           }


F-ES Sitecore

Что, если Кейлист был "1234 5678"? Ваш код скажет, что 123 был найден, но это неверный результат.

Mathew Soji

- Спасибо, это правда . Я просто хотел показать пример кода .
Следовало бы использовать split, в любом случае это предлагается в решении 2 .