【问题标题】:How to sort NameValueCollection using a key in C#?如何使用 C# 中的键对 NameValueCollection 进行排序?
【发布时间】:2010-10-11 03:46:33
【问题描述】:

我已经编写了以下代码并且它也可以工作 - 但我想知道他们是否比这更好:

 NameValueCollection optionInfoList = ..... ;
 if (aSorting)
            {
                optionInfoListSorted = new nameValueCollection();        
                String[] sortedKeys = optionInfoList.AllKeys; 
                Array.Sort(sortedKeys);
                foreach (String key in sortedKeys)
                    optionInfoListSorted.Add(key, optionInfoList[key]);

                return optionInfoListSorted;
            }

【问题讨论】:

    标签: c# sorting collections


    【解决方案1】:

    请改用SortedDictionary

    【讨论】:

    • SortedList 和 SortedDictionary 不允许重复键,这可能会迫使某些人使用 NameValueCollection。
    • 如果使用NameValueCollection,并按照示例中的描述使用重复键进行排序,重复键的顺序是不确定的,所以列表真的没有排序,是吗?
    【解决方案2】:

    也许您可以使用其他类型的列表,直接支持排序?

    List<KeyValuePair<string, string>> optionInfoList = ...;
    if (sorting) {
       optionInfoList.Sort((x,y) => String.Compare(x.Key, y.Key));
    }
    return optionInfoList;
    

    【讨论】:

    • 我需要将它传递给另一个类,并且在我的方法签名中有 List 会给我代码分析错误。
    • 您能具体说说“代码分析错误”的含义吗?
    【解决方案3】:

    如果您可以使用NameValueCollection 并且您的集合中没有很多项目,那么没关系。如果它完成了工作,就不需要比这更花哨了。

    如果是性能瓶颈,请重新审视。

    【讨论】:

      猜你喜欢
      • 2011-12-10
      • 1970-01-01
      • 2013-02-01
      • 1970-01-01
      • 2016-08-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多