我有一个 NameValueCollection,我想根据他的值对其进行排序。有谁知道如何轻松地做到这一点?我想把它包装成一个 SortedList 或 SortedDictionairy 但我不知道如何开始。
蒂斯
我有一个 NameValueCollection,我想根据他的值对其进行排序。有谁知道如何轻松地做到这一点?我想把它包装成一个 SortedList 或 SortedDictionairy 但我不知道如何开始。
蒂斯
使用 LINQ:
var sorted = nvc.OrderBy(kvp => kvp.Value);
我认为解决方案的复杂性取决于您是否关心每个键的多个值。如果您只需要对每个键的第一个值进行排序,则以下内容应将排序结果返回为IEnumerable<KeyValuePair<string, string>>
:
var sorted = nvc.AllKeys.OrderBy(key => nvc[key])
.Select(key => new KeyValuePair<string, string>(key, nvc[key]));
如果您关心每个键的多个值,则可能必须在对它们进行排序之前将每个值拆分为 KeyValuePair。就像是:
var sorted = nvc.AllKeys
.SelectMany(key =>
nvc.GetValues(key)
.Select(val => new KeyValuePair<string, string>(key, val)))
.OrderBy(kvp => kvp.Value);
鉴于:
var nvc = new NameValueCollection() {
{ "key1", "c" },
{ "key1", "a" },
{ "key2", "b" }
};
第一个示例应返回以下内容IEnumerable<KeyValuePair<string, string>>
:
key2: b
key1: c,a
第二个示例应返回以下内容IEnumerable<KeyValuePair<string, string>>
:
key1: a
key2: b
key1: c