我需要知道是否有任何方法可以在不知道IDictionary的确切类型的情况下对其进行排序。
例如,我有一个接收对象的方法,其中有一个Dictionary对象……我只知道它是一个字典,所以我可以这样做:
public void MyMethod(PropertyInfo propriedadeParametro, object parameters){
IDictionary dictionary = ((IDictionary) propriedadeParametro.GetValue (parameters, null));
}但是,是否需要按EnumPersonalizado对此字典中的条目进行排序,而不考虑其他类型“某物?”有
发布于 2013-02-16 00:11:48
IDictionary是IEnumerable,因此您可以尝试执行类似new ArrayList(dictionary).Sort()的操作,但它会尝试将成员强制转换为IComparable,或者您可以使用接受IComparer对象的排序重载。另一种方法是使用反射-首先找到实际的键/值类型,然后创建一个对泛型OrderBy的调用。
发布于 2013-02-16 00:21:57
你不能给字典排序。根据定义,字典中没有条目的“顺序”。这些项目存储在您无法控制的某种机制中,该机制旨在尽可能有效地添加、删除和搜索项目。
你能做的最好的事情就是把所有的条目从字典里拿出来,把它们放到其他的集合中,然后进行排序。
对于你的特殊情况,我们不清楚字典中键的类型或值是什么,需要知道这一点才能尝试对数据进行排序。
发布于 2013-02-16 00:22:46
请参阅此question。字典本身没有索引顺序。请考虑改为从KeyedCollection类继承。它是一个字典和一个普通列表的合并,它被设计为使用条目的一个成员作为键,并且有一个索引顺序。
https://stackoverflow.com/questions/14898401
复制相似问题