应用设置按值查找键

本文关键字:查找 设置 应用 | 更新日期: 2023-09-27 18:35:21

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

我想从 Web.config 中的应用程序设置中找到某个键,如果我有值

因此,为了简单起见,是否有可能通过指定值而不是键来查找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");

(显然,这返回了一个键/值对,您可以添加 .选择(k => k.Key);只是为了得到钥匙。 另请注意,使用 where 可能会返回倍数,您可以使用 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");

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