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 回答