在保存到文本文件</icomparable>时对BlockingCollection <icomparable>进行排序

时间:2012-10-31 14:09:39

标签: c# c#-4.0

我有一个在BlockingCollection<T> where T : IComparable上枚举的消费者,然后在每个项目的文本文件中写入一行。最终结果是最大约7Gb-10Gb的文本文件。但是它们不合适。

我无法对内存中的列表进行排序,因为它可能会变得非常大。我想到解决方案的唯一方法是写入临时文本文件,然后它们到达然后在最后洗牌,但我无法想象这是非常有效的。

关于如何做到这一点的任何想法?

2 个答案:

答案 0 :(得分:1)

我相信索引排序,如果您正在寻找。我们的想法是为每个大项目分配一个索引然后只对索引进行排序,最后只需循环遍历有序索引数组并写出文件。

维基百科:Memory usage patterns and index sorting

答案 1 :(得分:0)

我最终使用SSIS将结果加载到SQL中的临时表中并按照这种方式对其进行排序。