1

NameValueCollection があり、これを彼の値で並べ替えたいと思います。これを簡単に行う方法を誰かが考えていますか? SortedList または SortedDictionairy にラップすることを考えていましたが、開始方法がわかりません。

タイス

4

2 に答える 2

4

LINQ の使用:

var sorted = nvc.OrderBy(kvp => kvp.Value);
于 2011-10-18T15:04:06.523 に答える
1

ソリューションの複雑さは、キーごとに複数の値を気にするかどうかに依存すると思います。キーごとに最初の値のみを並べ替える必要がある場合、以下は並べ替えられた結果を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
于 2012-07-29T00:11:26.450 に答える