从逗号分隔的字符串中读取 Web.config 设置
Read Web.config settings from comma-delimited string
我正在阅读 Web.config 中特定的 AppSetting key/value 对,使用硬编码值,代码如下。这行得通。
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 部分进行编码以将值包含在列表中。
我该怎么做?我试过 x.Contains 但这不起作用(可以理解)。我正在寻找逗号分隔列表中的 AppSetting 键。谢谢
尝试使用 Select() 或 Where() 方法
例如:
List<string> ConfigValues = ConfigurationManager.AppSettings["setConfigValues"].Split(',').ToList();
ConfigValues.Select(val => val == "x");
我会将其转换为不区分大小写的字典:
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
}
有效的解决方案比我想象的要容易得多。这适用于我想要做的事情:
string[] filteredList = ConfigurationManager.AppSettings["setConfigValues"].Split(',').ToArray();
具体来说,我正在使用 "setConfigValues" 数组的键来拉取 Web.config 值,因此将逗号分隔的字符串解析为 string[] 就足够了。
foreach (string s in filteredList)
{
keyValues.Add(new KeyValuePair<string, string>(s, webConfigApp.AppSettings.Settings[s].Value));
}
我正在阅读 Web.config 中特定的 AppSetting key/value 对,使用硬编码值,代码如下。这行得通。
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 部分进行编码以将值包含在列表中。
我该怎么做?我试过 x.Contains 但这不起作用(可以理解)。我正在寻找逗号分隔列表中的 AppSetting 键。谢谢
尝试使用 Select() 或 Where() 方法 例如:
List<string> ConfigValues = ConfigurationManager.AppSettings["setConfigValues"].Split(',').ToList();
ConfigValues.Select(val => val == "x");
我会将其转换为不区分大小写的字典:
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
}
有效的解决方案比我想象的要容易得多。这适用于我想要做的事情:
string[] filteredList = ConfigurationManager.AppSettings["setConfigValues"].Split(',').ToArray();
具体来说,我正在使用 "setConfigValues" 数组的键来拉取 Web.config 值,因此将逗号分隔的字符串解析为 string[] 就足够了。
foreach (string s in filteredList)
{
keyValues.Add(new KeyValuePair<string, string>(s, webConfigApp.AppSettings.Settings[s].Value));
}