下面是我的通用方法,它返回一个从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();
}
}
}
答案 0 :(得分:2)
看起来您正在使用CsvHelper
。如果是这种情况,仅GetRecords
方法就足以在没有标题的情况下映射结果,前提是T上的属性与数据中的标题名称匹配。
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();
}
答案 1 :(得分:0)
您可以使用“跳过”方法并指定要跳过的项目数。 像lst.Skip(1);