C# AppSettings按值查找键
我有一个非常简单的问题 如果我有值,我想从Web.config中的AppSettings中找到某个键 因此,为了简单起见,是否可以通过指定值而不是键来查找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
<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");