我正在使用 CsvHelper 读取 CSV 文件。这是我的代码(非常简单):使用(var reader = new StreamReader(\'example.csv\'))使用(var csv = new CsvReader(reader, CultureInfo.InvariantC...
我正在使用 CsvHelper 读取 CSV 文件。
这是我的代码(非常简单):
using (var reader = new StreamReader("example.csv"))
using (var csv = new CsvReader(reader, CultureInfo.InvariantCulture))
{
var records = csv.GetRecords<CsvData>();
int i = 0;
foreach (var record in records)
{
i++;
Console.WriteLine($"Processed {i}/{records.Count()} records.");
}
}
Console.WriteLine("Script finished");
问题是我的代码没有循环 foreach,所以它不会打印任何东西...我在线上设置了一个断点, i++;
但它没有中断。
如果我打印 records.Count()
它将返回 3:
这可能是一个 CSV 文件的示例:
代码格式,方便您复制:
Size,Color
8,Yellow
2,Orange
13,Blue
这可能是 CsvData 类的一个例子:
public class CsvData
{
public decimal? Size { get; set; }
public string Color { get; set; }
}
我应该如何将我的行解析迭代到我的 CsvData 类中以创建 List<CsvData>
或类似?
将集合转换为列表有效:
只需:
List<CsvData> records = csv.GetRecords<CsvData>().ToList();
代码结果(适合懒人)
using (var reader = new StreamReader("example.csv"))
using (var csv = new CsvReader(reader, CultureInfo.InvariantCulture))
{
var records = csv.GetRecords<CsvData>().ToList();
int i = 0;
foreach (var record in records)
{
i++;
Console.WriteLine($"Processed {i}/{records.Count()} records.");
}
}
Console.WriteLine("Script finished");