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
2番目の例は、次を返す必要がありますIEnumerable<KeyValuePair<string, string>>
。
key1: a
key2: b
key1: c