1

SortedDictionary は WP7 では使用できないことを理解しています...自分で並べ替える必要があります。

いくつかの例を見つけて、現在このコードを使用しています

Dictionary<string, TimetableClass> AllClasses = new Dictionary<string, TimetableClass>()
        {
            { "Maths", new TimetableClass {ClassName="Maths", Location="RM1"}},
            { "Physics", new TimetableClass {ClassName="Physics", Location="PM1"}},
            { "English", new TimetableClass {ClassName="English", Location="PM1"}},
            { "Algebra", new TimetableClass {ClassName="Algebra", Location="A1"}}

        };

        var sortedDict = new Dictionary<string, TimetableClass>();

        foreach (KeyValuePair<string, TimetableClass> singleclass in AllClasses.OrderBy(key => key.Value))
        {
            sortedDict.Add(singleclass.Key, singleclass.Value);
        }

しかし、これを実行すると、foreach で例外が発生しますか?

例外は未処理の引数例外です - 「値はボットが期待される範囲内にあります」

ここで何が間違っていたのか本当にわかりません。どんな助けでも感謝します。

  • ありがとう
4

1 に答える 1

1

これはうまくいくはずです

foreach (KeyValuePair<string, TimetableClass> singleclass in AllClasses.OrderBy(item => item.Key))
        {
            sortedDict.Add(singleclass.Key, singleclass.Value);
        }

または、Object(Value) に基づいて並べ替えたい場合は、これを試してください

foreach (KeyValuePair<string, TimetableClass> singleclass in AllClasses.OrderBy(item => item.Value.ClassName))
        {
            sortedDict.Add(singleclass.Key, singleclass.Value);
        }

最後に、foreach ループの代わりにこれを利用することもできます。追加の「sortedDict」辞書は必要ありません。

AllClasses = AllClasses.OrderBy(item => item.Key).ToDictionary(item => item.Key, item => item.Value);
于 2012-09-26T11:01:37.097 に答える