[英]Read Web.config settings from comma-delimited string
我正在使用硬编码值在Web.config中读取特定的AppSetting键/值对,使用下面的代码。 这有效。
string[] filteredList = webConfigApp.AppSettings.Settings.AllKeys.AsEnumerable().Where(x => x.Equals("appMode") || x.Equals("loggingMode") || x.Equals("ticketModeCache") || x.Equals("ticketMode")).ToArray();
相反,我想从也在Web.config中的逗号分隔列表中读取,例如:
<add key="setConfigValues" value="appMode,loggingMode,ticketModeCache,ticketMode,twilioMode,kioskId,kioskPrinterConfig" />
我知道如何解析并创建一个List <>沿着这些方向做某事......
List<string> ConfigValues = ConfigurationManager.AppSettings["setConfigValues"].Split(',').ToList();
...但我不知道如何编码Linq部分以在List中包含值。
我怎样才能做到这一点? 我试过x.Contains,但这不起作用(可以理解)。 我期待找到逗号分隔列表中的AppSetting键。 谢谢。
我会将其转换为不区分大小写的字典:
var configValues = ConfigurationManager.AppSettings["setConfigValues"]
.Split(", ".ToCharArray(), StringSplitOptions.RemoveEmptyEntries)
.Distinct()
.ToDictionary(
item => item,
item => webConfigApp.AppSettings.Settings[item].Value,
StringComparer.InvariantCultureIgnoreCase);
if (configValues.ContainsKey("loggingMode"))
{
// do stuff
}
if (configValues.TryGetValue("loggingMode", out string value) && value == "on")
{
// do stuff
}
尝试使用Select()或Where()方法例如:
List<string> ConfigValues = ConfigurationManager.AppSettings["setConfigValues"].Split(',').ToList();
ConfigValues.Select(val => val == "x");
有效的解决方案比我想象的要容易得多。 这适用于我试图做的事情:
string[] filteredList = ConfigurationManager.AppSettings["setConfigValues"].Split(',').ToArray();
具体来说,我使用“setConfigValues”数组的键来提取Web.config值,因此将逗号分隔的字符串解析为字符串[]就足够了。
foreach (string s in filteredList)
{
keyValues.Add(new KeyValuePair<string, string>(s, webConfigApp.AppSettings.Settings[s].Value));
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.