有没有办法通过CSV文件以随机顺序制作StreamReader ReadLine()
?
示例:
StreamReader reader = new StreamReader(File.OpenRead(@"C:\\file.csv"));
String firstName = reader.ReadLine().ToString();
Console.WriteLine(firstName);
答案 0 :(得分:1)
StreamReader按顺序按顺序读取。我能想到的只是文件不是很大
var lines File.ReadAllLines(@"C:\\file.csv")
Random random = new Random((int)DateTime.Now.Millisecond);
List<T> sortedList = lines.OrderBy(x => random.Next()).ToList();
答案 1 :(得分:0)
使用C#&#39; Random类生成一个随机数,您可以使用该数字从文件中选择一行。
File.ReadLines()不必读取整个文件,您可以使用LINQ构建查询来过滤它读取的行:
返回值类型:System.Collections.Generic.IEnumerable All 文件的行,或查询结果的行。
但是,在这种情况下,我们需要全部阅读才能找到行数。
// Read lines
string[] lines = File.ReadLines(@"C:\file.csv");
// Seed a random number in the range 0 to your count
var r = new Random();
int randomNumber = r.Next(0, lines.Length);
// Read the random line
string line = lines.Skip(randomNumber - 1).Take(1).First();
答案 2 :(得分:0)
StreamReader
只是向前,你无法向后,但你可以先使用File.ReadAllLines
将所有行读入内存:
string[] allLines = File.ReadAllLines(@"C:\\file.csv");
Random rnd = new Random();
List<string> randomLines = new List<string>(allLines.Length);
for(int i = 0; i < allLines.Length ; i++)
{
randomLines.Add(allLines[rnd.Next(allLines.Length)]);
}