0

下面是我的通用方法,它返回一个从 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();
        }
    }
}
4

2 回答 2

2

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

TL;博士; 去掉对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();
}
于 2015-12-05T18:18:33.247 回答
0

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

于 2015-12-05T18:26:39.830 回答