有没有简单的方法可以根据C#中的键对NameValueCollection进行排序?

6 c# namevaluecollection

我正在寻找一种基于密钥对NameValueCollection进行排序的简单方法 - 但它不应该是性能很重要.

Mar*_*ell 13

SortedDictionary<string,string>或开始,SortedList<string,string>你已经在那里......

如果您需要每个键的多个项目,那么请考虑一个SortedDictionary<string,List<string>>.有一些方法可以使用扩展方法简化添加等 - 它不一定非常可怕.

另请注意,这NameValueCollection不区分大小写,因此您可能需要使用其中一个不敏感的比较 - 例如:

Dictionary<string,string> data = new Dictionary<string,string>(
            StringComparer.InvariantCultureIgnoreCase);
Run Code Online (Sandbox Code Playgroud)

(编辑)这是一个使用扩展方法在C#3.0中针对单个键填充多个值的示例:

    static void Main()
    {
        var data = new Dictionary<string, List<string>>(
            StringComparer.InvariantCultureIgnoreCase);
        data.Add("abc", "def");
        data.Add("abc", "ghi");
    }

    static void Add<TKey, TValue>(this IDictionary<TKey, List<TValue>> lookup,
        TKey key, TValue value)
    {
        List<TValue> list;
        if (!lookup.TryGetValue(key, out list))
        {
            list = new List<TValue>();
            lookup.Add(key, list);
        }
        list.Add(value);
    }
Run Code Online (Sandbox Code Playgroud)