public DataSet ReadOrderFile(FileInfo file, CsvReaderConfiguration config) { var csvHelperConfig = new CsvHelper.Configuration.CsvConfiguration { SkipEmptyRecords = config.SkipEmptyRecords, ThrowOnBadData = true }; var result = DataTableCreator.CreateDataSetForConfig(config); using (var parser = new CsvParser(file.OpenText(), csvHelperConfig)) { while (true) { if (config.SkipHeader) { SkipFirstHeaderLine(parser); } var row = parser.Read(); if (row == null) { break; } var recordType = recordSelector.SelectRecordForRow(config.CsvRecords, config, row); var table = result.Tables[recordType.TableName]; var newRow = table.NewRow(); CsvFieldMapper.Mapfields(row, recordType, newRow); table.Rows.Add(newRow); } } return(result); }
public CsvRecord SelectRecordForRow(List <CsvRecord> records, CsvReaderConfiguration config, string[] lineData) { if (!records.Any()) { throw new Exception($"No records found."); } if (records.Count > 1) { throw new Exception($"Multiple records found with but SingleRecordCsvRecordReaderSelector supports only one."); } return(records.Single()); }