WP7 SortedDictionary

时间:2012-09-26 10:40:06

标签: windows-phone-7 sorteddictionary

据我所知,在WP7中没有SortedDictionary ......所以必须自己排序。

我找到了很多例子,目前正在使用此代码

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上得到了一个例外吗?

异常是未处理的参数异常 - “值确实机器人在预期的范围内”

真的不知道我在这里做错了什么。 任何帮助表示赞赏。

  • 感谢

1 个答案:

答案 0 :(得分:1)

这应该有效

foreach (KeyValuePair<string, TimetableClass> singleclass in AllClasses.OrderBy(item => item.Key))
        {
            sortedDict.Add(singleclass.Key, singleclass.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);