跳过csv文件中的行

问题描述 投票:0回答:1

我正在使用CSVHelper(https://github.com/JoshClose/CsvHelper/blob/master/src/CsvHelper/Configuration/IReaderConfiguration.cs)来读取csv文件,并且我希望从文件开头跳过一定数量的行。是否可以使用“ ShouldSkipRecord”来实现这一目标?

.net-core csvhelper
1个回答
0
投票

如果知道所有行都以某个特定字符开头,则可以使用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; }
}
© www.soinside.com 2019 - 2024. All rights reserved.