сортировка именизначной коллекции - PullRequest
8 голосов
/ 04 ноября 2010

Как мне отсортировать имя-коллекцию в алфавитном порядке? Должен ли я сначала привести его к другому списку, например отсортированному списку, списку или чему-то еще? Если тогда, как мне это сделать? прямо сейчас у меня есть вся моя строка в переменной namevalucollection.

Ответы [ 2 ]

13 голосов
/ 04 ноября 2010

Желательно для начала использовать подходящую коллекцию, если она у вас в руках.Однако, если вам нужно работать на NameValueCollection, здесь есть несколько вариантов:

NameValueCollection col = new NameValueCollection();
col.Add("red", "rouge");
col.Add("green", "verde");
col.Add("blue", "azul");

// order the keys
foreach (var item in col.AllKeys.OrderBy(k => k))
{
    Console.WriteLine("{0}:{1}", item, col[item]);
}

// or convert it to a dictionary and get it as a SortedList
var sortedList = new SortedList(col.AllKeys.ToDictionary(k => k, k => col[k]));
for (int i = 0; i < sortedList.Count; i++)
{
    Console.WriteLine("{0}:{1}", sortedList.GetKey(i), sortedList.GetByIndex(i));
}

// or as a SortedDictionary
var sortedDict = new SortedDictionary<string, string>(col.AllKeys.ToDictionary(k => k, k => col[k]));
foreach (var item in sortedDict)
{
    Console.WriteLine("{0}:{1}", item.Key, item.Value);
}
0 голосов
/ 04 ноября 2010

См. Этот вопрос: Как отсортировать NameValueCollection с помощью ключа в C #?

... что предполагает использование SortedDictionary

...