将SortedList移植到Silverlight

3

看起来 SortedList 被排除了。在现有的集合中,你认为哪种最适合保持相同的快速访问和更改?

Silverlight 的 Dictionary 是否可以永久排序?

此致 敬礼 VLK

4个回答

2

0

回答你的问题:不行。字典不能保证按键排序。

然而,List<T> 支持 BinarySearch 方法。这可以帮助你实现类似于 SortedList 的目标。

文档中有一个很好的例子,说明了基本的实现方法。请参见:

List<T>.BinarySearch Method (T)


谢谢,但文档中还是提到:List<T> 必须按照比较器的实现进行排序,否则结果将不正确。 - VLK
啊,你的想法是通过二分查找给出的位置来保持列表始终排序。 嗯,我会检查插入时间与集合大小的依赖关系。 - VLK

0

你可以看一下 Wintellect 的 Power Collections。这个库在 EPL 下是免费的。我认为 OrderedMultiDictionary 可以解决你的问题。你应该能够在 Silverlight 下编译它。虽然我已经有几年没有使用过这个库了,但我曾经在一个 WPF 项目中使用过这个库(和 Richter 的线程库)。

编辑:

在尝试使用后,看起来你需要做一些工作才能让 Power Collections 在 Silverlight 中正常工作。


0
我的解决方法是创建一个具有KeyValuePair类型的通用列表,然后对该列表进行排序,以避免使用Silverlight。
List<KeyValuePair<int, string>> sampleList = new List<KeyValuePair<int, string>>();

//Assuming you have a set of objects in an array or list
foreach(var item in items)
{
   sampleList.Add(new KeyValuePair<int, string>>(item.ID, item.Description))
}

sampleList = sampleList.OrderBy(data => data.Key).ToList();

效果与使用排序列表相同。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接