基本上,我有一个KeyedCollection<string, CustomNode>,我希望能够按键对集合进行排序(或者最好使用自定义比较器)。
如果这是不可能的,是否有人可以推荐另一个类,其中的键嵌入在我可以排序的值中?
发布于 2011-01-12 09:00:45
根据进一步的信息(参见上面关于answer的注释),一个要求是在编辑元素的属性后,保持"set“按元素的属性排序。
在这种情况下,您可以查看一下BindableLinq (还有其他类似的框架),并使用其中实现的OrderBy语句。
KeyedCollection<string, CustomNode> collection = /* from whereever */
collection.Items.AsBindable().OrderBy(c => c.PropertyOnCustomNode);只要您的编辑属性引发一个PropertyChanged事件,它就会立即应用重新排序。如果您希望更改集合,请确保源集合实现了INotifyCollectionChanged。
发布于 2011-05-26 02:24:54
当试图解决类似的问题时,出现了这个问题。如果它仍然相关,我可以使用下面的示例实现排序:
http://social.msdn.microsoft.com/forums/en-US/netfxbcl/thread/56adc0f9-aa1b-4acf-8546-082bb01058f2/
对我来说很有吸引力。
干杯!
发布于 2011-01-12 08:31:29
KeyCollection<T>继承自实现IEnumerable的Collection<T>,因此您应该能够使用IEnumerable.OrderBy()。IEnumerable.OrderBy()也有一个重载的allows you to supply a custom comparer。
https://stackoverflow.com/questions/4664228
复制相似问题