AppSettings 按值查找键

AppSettings find key by value

我有一个希望非常简单的问题。

如果我有值

,我想从 Web.config 中的 AppSettings 中找到某个键

为了简单起见,是否可以通过指定值而不是键来找到 AppSettings 条目

<appSettings>
  <add key="my:Hello" value="world"/>
  <add key="my:Test" value="New"/>
  <add key="my:Test2" value="SecondThing"/>
  etc...
</appSettings>

假设我的代码中有某个地方 world,我想找到应用程序设置的密钥 Hello。有没有可能这样做?

我不想收到关于我为什么要这样做的问题,也不想得到诸如将其保存在某个数据库中之类的答案。

你可以这样做:

var matches = ConfigurationManager.AppSettings.AllKeys.Select(t => 
new { Key = t, Value = 
ConfigurationManager.AppSettings[t] }).Where(i => i.Value == "world");

(显然这个 return 是一个 key/value 对,您可以添加 .Select(k => k.Key); 来获取密钥。还要注意,使用 where 可能会 return 倍数,您可以使用 SingleOrDefault/FirstOrDefault 作为替代)

您可以检索所有键并找到包含以下值的键:

foreach (string key in ConfigurationManager.AppSettings)
{
    if (ConfigurationManager.AppSettings[key] == "world") 
    {
        return key;
    }
}
var settings = ConfigurationManager.AppSettings;
var keys = settings.AllKeys.Where(k => settings[k] == "world");

但请注意 - 值不是唯一的。