我对如何访问所有记录有点困惑。它不会让我通过项目运行foreach(),它只返回第一个作为对象。我知道它在文档中说明了这一点。但我不知道该怎么做。
The GetRecords<T> method will return an IEnumerable<T> that will yield
records. What this means is that only a single record is returned at a time
as you iterate the records. That also means that only a small portion of the
file is read into memory. Be careful though. If you do anything that
executes a LINQ projection, such as calling .ToList(), the entire file will
be read into memory. CsvReader is forward only, so if you want to run any
LINQ queries against your data, you'll have to pull the whole file into
memory. Just know that is what you're doing.
这是我的代码
protected void WatcherCreated(object sender, FileSystemEventArgs e)
{
Console.WriteLine("Watcher Created");
string[] files = Directory.GetFiles(_watchedFolder, "*.csv");
foreach (string file in files)
{
using (var reader = new StreamReader(file))
using (var csv = new CsvReader(reader))
{
try
{
csv.Read();
var records = csv.GetRecord<InputCsv>();
}
catch (CsvHelper.HeaderValidationException exception)
{
Console.WriteLine(exception);
throw;
}
}
}
}
记录是假定的IEnumerable ..我最终想使用对象o使用Newtonsoft.Json将其解析为json
它甚至没有在csv.GetRecords()之后为我提供.ToList()选项;
函数调用上有一个丢失的字母:
var records = csv.GetRecord<InputCsv>();
你应该打电话给GetRecords
- 注意额外的s。
var records = csv.GetRecords<InputCsv>();