将字典中的所有键转换为大写

时间:2014-09-11 06:53:54

标签: c# idictionary querystringparameter

这可能是一个非常简单的问题,但谷歌让我失望,并一直指向我的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"]以便它忽略这个案例?

4 个答案:

答案 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;
}