views:

1042

answers:

3

I've written following code and it works too - but I wanted to know whether their is better way than this :

 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;
            }
+2  A: 

Perhaps you could use a different kind of list, that supports sorting directly?

List<KeyValuePair<string, string>> optionInfoList = ...;
if (sorting) {
   optionInfoList.Sort((x,y) => String.Compare(x.Key, y.Key));
}
return optionInfoList;
Guffa
I need to pass this to another class and having List<KeyValuePair> in my method signatures gives me Code Analysis errors.
Would you be specific by what you mean by "Code Analysis Errors"?
Sung Meister
+3  A: 

Use a SortedDictionary instead.

Robert C. Barth
+1; or SortedList<,>, depending on the scenario.
Marc Gravell
A: 

If you have to use NameValueCollection and you don't have many items in the collection, then it's fine. No need to get any fancier than that if it get's the job done.

If it's a performance bottleneck, then revisit.

Ryan Emerle