这可能是一个非常简单的问题,但谷歌让我失望,并一直指向我的python解决方案。
我有一个网页,其中applciations / users可以提供querystringparameters
。要检索查询字符串参数,我使用以下代码:
IDictionary<string, string> qStrings = HtmlPage.Document.QueryString;
检查是否存在指定的密钥,我使用以下代码:
if (!String.IsNullOrEmpty(qStrings["PARAM1"]))
{}
了解我们的用户,我希望他们提供如下参数键:&#34; Param1&#34;,&#34; param1&#34;,&#34; pArAm1&#34; 如何简单地将字典中的每个键转换为大写而不迭代每个键值对?
或者我如何改变qStrings["PARAM1"]
以便它忽略这个案例?
答案 0 :(得分:6)
您可以使用StringComparer
查找忽略其案例的密钥:
var qStrings = new Dictionary<string, string>(
HtmlPage.Document.QueryString,
StringComparer.OrdinalIgnoreCase)
答案 1 :(得分:1)
也许你可以这样做:
Dictionary<string, string> qStrings = new Dictionary<string, string>();
foreach (var a in qStrings.Keys)
{
switch (a.ToUpper())
{
case "PARAM1":
break;
}
}
答案 2 :(得分:0)
最简单的方法
qStrings = qStrings .ToDictionary(k => k.Key.ToUpper(), k => k.Value.ToUpper());
答案 3 :(得分:-1)
没有迭代是不可能的。无论你使用什么方法,都会有某种迭代。这是你需要限制数据插入到一个统一的套管,而不是允许用户输入各种套管。
举个例子:"Param1", "param1", "pArAm1"
,将为每个单独的一个创建一个密钥,因为它们被视为单独的实体。处理这种情况的最佳方法是在插入时强制套管,而不是在查询值时。
例如:
void AddToDictionary(string key, string value)
{
qStrings[key.ToUpper()] = value;
}