在.NET中的文件中随机播放行

时间:2010-01-28 10:51:20

标签: c# file

考虑我有一个像“new.txt”这样的文件,

asdfg
qwerty
zcx
poi

现在我需要随机播放此文本文件的行。我怎么能在C#中做到这一点。?

6 个答案:

答案 0 :(得分:8)

var lines = File.ReadAllLines("test.txt");
var rnd = new Random();
lines = lines.OrderBy(line => rnd.Next()).ToArray();
File.WriteAllLines("test.txt", lines);

答案 1 :(得分:4)

不是真正高效的方式是:将文件读入IEnumerable<string>,制作.OrderBy(line => Guid.NewGuid())并将其写入文件

例如

var originalLines = File.ReadAllLines("test.txt");
var shuffledLines = lines.OrderBy(line => Guid.NewGuid()).ToArray();
File.WriteAllLines("test.txt", shuffledLines);

答案 2 :(得分:3)

我认为,Fisher-Yates shuffle并不难实现。

答案 3 :(得分:1)

我发现在MS Excel中这样做很有帮助,并考虑在此处发布。

1)将文件内容复制到MS Excel中的列。

2)然后在下一列第一个单元格(比如B1)中输入公式= rand()。

3)点击标题

,选择B栏

4)编辑 - &gt;填充 - &gt;向下填充所有具有随机值的单元格

5)选择要排序的内容和此列B并按升序排序。

因此内容将被洗牌,可以复制并粘贴到文本文档中。

答案 4 :(得分:0)

您可以将每一行放在一个数组中,并使用该数组的随机索引重写您的文件。

答案 5 :(得分:0)

我的第一个猜测是加载

中的所有行
List<string>

然后将列表洗牌,然后将其写回文件中,但如果文件很大,我的文件有点重...