Я думаю, что сложность решения зависит от того, заботишься ли ты о нескольких значениях на ключ. Если вам нужно только отсортировать первое значение для каждого ключа, следующее должно вернуть отсортированный результат как 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