2016-02-19 49 views
1

我希望有一個非常簡單的問題。AppSettings按值查找鍵

我想找到的AppSettings在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內的某個地方,我想找到appsetting的密鑰Hello。有沒有可能這樣做?

我不想得到問題,爲什麼我想這樣做或答案就像保存在一些數據庫中。

+0

你不是在做這個倒退嗎?或者你只是試圖去看看它是否可以完成? – user1666620

+0

我正在做這個倒退,但我知道這..但我必須這樣做.. –

回答

1

你可以做這樣的事情:

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

(顯然這返回鍵/值對,您可以添加。選擇(K => k.Key);剛拿到鑰匙還要注意使用其中將有可能返回的倍數,你可以使用的SingleOrDefault/FirstOrDefault作爲替代)

1

你可以檢索所有按鍵,發現包含該值的一個:

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

雖然這個答案是正確的,我標記了其他答案,因爲這是更靈活。 –

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

但注意 - 值不是唯一的。

+0

他們是,我如何使用他們.. –

+0

雖然這個答案是正確的,我標記了另一個答案,因爲這是更靈活。 –

+0

@JordyvanEijk這裏沒問題。請注意,其他解決方案不是更靈活 - 它只消耗更多內存:) –