8

如何按字母顺序对 namevaluecollection 进行排序?我是否必须首先将其转换为另一个列表,例如排序列表或 Ilist 之类的?如果那我该怎么做?现在我的所有字符串都在 namevaluecollection 变量中。

4

2 回答 2

14

如果它在您手中,最好使用合适的集合开始。但是,如果您必须进行操作,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);
}
于 2010-11-04T20:59:19.733 回答
0

请参阅此问题:如何使用 C# 中的键对 NameValueCollection 进行排序?

...这建议使用SortedDictionary

于 2010-11-04T20:56:51.950 回答