据我所知,在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上得到了一个例外吗?
异常是未处理的参数异常 - “值确实机器人在预期的范围内”
真的不知道我在这里做错了什么。 任何帮助表示赞赏。
答案 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);