跳过csv文件的第一行,因为它在文件格式中有空行.下面的

本文关键字:文件 格式 一行 csv 跳过 因为 | 更新日期: 2023-09-27 18:25:51

是我的通用方法,它返回一个对象列表,该列表采用从csv文件上传的Stream,但我想跳过第一行,因为csv的第二行只有标题。请帮我修改这个代码,从第二排中提取

public static List<T> getList<T>(Stream str, T obj)
{            
    using (var reader = new StreamReader(str))
    {
        using (var csvReader = new CsvReader(reader))
        {
            csvReader.Read();
            csvReader.Configuration.TrimHeaders = true;
            csvReader.Configuration.TrimFields = true;
            csvReader.Configuration.IsHeaderCaseSensitive = false;
            csvReader.Configuration.IgnoreHeaderWhiteSpace = true;
            csvReader.Configuration.SkipEmptyRecords = true;
            return csvReader.GetRecords<T>().ToList();
        }
    }
}

跳过csv文件的第一行,因为它在文件格式中有空行.下面的

看起来您正在使用CsvHelper。如果是这种情况,只要T上的属性与数据中的头名称匹配,那么仅GetRecords方法就足以映射没有头的结果。

TL;DR;删除对csvReader.Read方法的调用,只使用GetRecords方法。

using (var reader = new StreamReader(str))
using (var csvReader = new CsvReader(reader))
{
    csvReader.Configuration.TrimHeaders = true;
    csvReader.Configuration.TrimFields = true;
    csvReader.Configuration.IsHeaderCaseSensitive = false;
    csvReader.Configuration.IgnoreHeaderWhiteSpace = true;
    csvReader.Configuration.SkipEmptyRecords = true;
    return csvReader.GetRecords<T>().ToList();
}

您可以使用Skip方法并指定要跳过的项目数。就像lst。跳过(1);