C# 删除大型文本文件中的重复项

C# 删除大型文本文件中的重复项,c#,permutation,C#,Permutation,我一直在尝试计算一个很长单词的所有唯一排列(反疾病排列),虽然我可以计算单词的排列,但我在停止复制方面遇到了问题 通常我会在字符串上运行List.Contains()方法,但是排列列表太大了,我无法将其保存在内存中。我早些时候犯了那个错误,并设法用光了我电脑中所有的8GB内存。为了防止这种情况再次发生,我修改了代码,将计算出的排列附加到文件中,并将其从内存中释放 我的主要问题是:如何防止在不将整个内容加载到内存的情况下将重复排列添加到我的文件中?是否可以有选择地加载(例如)前几兆字节,扫描这些字

我一直在尝试计算一个很长单词的所有唯一排列(反疾病排列),虽然我可以计算单词的排列,但我在停止复制方面遇到了问题

通常我会在字符串上运行
List.Contains()
方法,但是排列列表太大了,我无法将其保存在内存中。我早些时候犯了那个错误,并设法用光了我电脑中所有的8GB内存。为了防止这种情况再次发生,我修改了代码,将计算出的排列附加到文件中,并将其从内存中释放

我的主要问题是:如何防止在不将整个内容加载到内存的情况下将重复排列添加到我的文件中?是否可以有选择地加载(例如)前几兆字节,扫描这些字节,然后继续移动,直到文件完成,或者我应该朝不同的方向看


这不是作业,我的数学作业给出了一个假设的情况,计算机每秒可以计算30个排列,让我计算出计算所有排列需要多长时间。这不是问题,我不需要帮助,我只是想知道一台现代计算机执行同样的任务需要多长时间。

使用一种算法,生成所有排列,而不产生重复项,怎么样?这样你就不必一开始就检查它们了


在谷歌搜索“算法生成置换”时,可以找到几十个参考资料,让你开始学习。e、 g.

使用一种算法生成所有排列,而不产生重复排列,怎么样?这样你就不必一开始就检查它们了

在谷歌搜索“算法生成置换”时,可以找到几十个参考资料,让你开始学习。e、 g