我正在使用CSVHelper(https://github.com/JoshClose/CsvHelper/blob/master/src/CsvHelper/Configuration/IReaderConfiguration.cs)来读取csv文件,并且我希望从文件开头跳过一定数量的行。是否可以使用“ ShouldSkipRecord”来实现这一目标?
如果知道所有行都以某个特定字符开头,则可以使用ShouldSkipRecord
。>>
public class Program { public static void Main(string[] args) { using (MemoryStream stream = new MemoryStream()) using (StreamWriter writer = new StreamWriter(stream)) using (StreamReader reader = new StreamReader(stream)) using (CsvReader csv = new CsvReader(reader)) { writer.WriteLine("# Something here."); writer.WriteLine("# Another line we don't need."); writer.WriteLine("Id,Name"); writer.WriteLine("1,George"); writer.Flush(); stream.Position = 0; csv.Configuration.ShouldSkipRecord = row => row[0].StartsWith("#"); var records = csv.GetRecords<Foo>().ToList(); } } } public class Foo { public int Id { get; set; } public string Name { get; set; } }
如果您知道要跳过前两行,则可以使用。
public class Program
{
public static void Main(string[] args)
{
using (MemoryStream stream = new MemoryStream())
using (StreamWriter writer = new StreamWriter(stream))
using (StreamReader reader = new StreamReader(stream))
using (CsvReader csv = new CsvReader(reader))
{
writer.WriteLine("Something here.");
writer.WriteLine("Another line we don't need.");
writer.WriteLine("Id,Name");
writer.WriteLine("1,George");
writer.Flush();
stream.Position = 0;
for (int i = 0; i < 2; i++)
{
csv.Read();
}
var records = csv.GetRecords<Foo>().ToList();
}
}
}
public class Foo
{
public int Id { get; set; }
public string Name { get; set; }
}