问题
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;
}
回答1:
Use a SortedDictionary instead.
回答2:
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;
回答3:
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.
来源:https://stackoverflow.com/questions/608703/how-to-sort-namevaluecollection-using-a-key-in-c