FileHelpers 读取复杂的 csv 文件,包括 class 对象中的内部 csv 列表

FileHelpers reading a complex csv file including an inner csv list in a class object

我有以下 csv 文件:

Employer EID,File Creation Date,File Creation Time,Salary Year and Month,Total Salaries,Total Records,,,
1006200,20032016,1031,201603,2200,1,,,
Record ID,Employee QID,Number of Working Days,Net Salary,Basic Salary,Extra hours,Extra Income,Deductions,Payment Type
1,29135617946,31,2200,2200,0,0,0,SALARY 
2,29135617947,31,2200,2300,0,0,0,SALARY 
3,29135617948,31,2200,2250,0,0,0,SALARY 

以上文件的第一部分是雇主信息,第二部分是雇员的工作信息以及他们的薪水。

我想创建一个复合体 class Employer,它将具有员工属性以及名为 Employee 的复杂类型 List,它将包括所有员工信息。

请帮助我 direction/code 如何使用 FileHelpers 实现此目的。

您可以使用 MasterDetailEngine。有an example in the documentation.

您提供一个选择器 class 使 FileHelpers 能够确定记录是主记录还是详细记录。

private RecordAction ExampleSelector(string record)
{
    if (record.Length < 2)
        return RecordAction.Skip;

    if (IsMasterRecord(record)) // some way of identifying your master records
        return RecordAction.Master;
    else
        return RecordAction.Detail;
}

然后您可以像这样将文件读入 classes:

var engine = new MasterDetailEngine<Employer, Employee>(new MasterDetailSelector(ExampleSelector));

var result = engine.ReadFile("Input.txt");

foreach (var group in result) {
    Console.WriteLine("Customer: {0}", group.Master.EmployerEid);
    foreach (var detail in group.Details)
        Console.WriteLine("    Freight: {0}", detail.EmployeeQid);
}