C# AppSettings按值查找键

C# AppSettings按值查找键,c#,asp.net-mvc,web-config,C#,Asp.net Mvc,Web Config,我有一个非常简单的问题 如果我有值,我想从Web.config中的AppSettings中找到某个键 因此,为了简单起见,是否可以通过指定值而不是键来查找AppSettings条目 <appSettings> <add key="my:Hello" value="world"/> <add key="my:Test" value="New"/> <add key="my:Test2" value="SecondThing"/> et

我有一个非常简单的问题

如果我有值,我想从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");

(显然,这会返回一个键/值对,您可以添加.Select(k=>k.key);只获取键。另外请注意,使用where可能会返回倍数,您可以使用SingleOrDefault/FirstOrDefault作为替代)

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

foreach (string key in ConfigurationManager.AppSettings)
{
    if (ConfigurationManager.AppSettings[key] == "world") 
    {
        return key;
    }
}

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

但是您不是在反向执行吗?或者你只是想看看能不能做到?我倒着做,但我知道。。但是我必须这样做。虽然这个答案是正确的,但我标记了另一个答案,因为它更灵活。@JordyvanEijk这里没有问题。请注意,另一个解决方案并不是更灵活,它只是占用了更多的内存:)虽然这个答案是正确的,但我标记了另一个答案,因为它更灵活。
var settings = ConfigurationManager.AppSettings;
var keys = settings.AllKeys.Where(k => settings[k] == "world");