AppSettings按值查找键

时间:2016-02-19 16:21:07

标签: 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"/>
  etc...
</appSettings>

假设我的代码world中有一处,我想找到appsetting的密钥Hello。有没有可能这样做?

我不想问我为什么要这样做或者只是将其保存在某个数据库中的答案。

3 个答案:

答案 0 :(得分:1)

你可以这样做:

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

(显然这会返回一个键/值对,你可以添加.Select(k =&gt; k.Key);来获取密钥。另请注意,使用where可能会返回多个,你可以使用SingleOrDefault / FirstOrDefault作为替代方案)

答案 1 :(得分:1)

您可以检索所有密钥并找到包含值的那个:

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

答案 2 :(得分:1)

var settings = ConfigurationManager.AppSettings;
var keys = settings.AllKeys.Where(k => settings[k] == "world");

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