Hello I'm trying to write to a csv file using 2 classes as a data source. The output should have 3 columns and X amount of row.
class MyClassA
{
public string some_string1; //column 1
public string some_string2; //column 3
}
class MyClassB
{
public string some_string1; //column 2
}
public class MyClassAMap : ClassMap<MyClassA>
{
public ProjectMap()
{
Map(c => c.some_string1).Name("Column 1").Index(0);
Map(c => c.some_string2).Name("Column 3").Index(2);
}
}
public class MyClassBMap : ClassMap<MyClassB>
{
public ProjectMap()
{
Map(c => c.some_string1).Name("Column 2").Index(1);
}
}
private void Run()
{
//MyClassA and MyClassB creation logic
//stuff
/////////
using (var writer = new CsvWriter(new StreamWriter(_file), CultureInfo.InvariantCulture))
{
writer.Context.RegisterClassMap<MyClassAMap>();
writer.Context.RegisterClassMap<MyClassBMap>();
writer.WriteHeader<MyClassA>();
writer.WriteHeader<MyClassB>();
for(int i = 0; i < 10; i++)
{
writer.WriteRecord(myClassAList[i]);
writer.WriteRecord(myClassBList[i]);
writer.NextRecord();
}
}
}
In this code I was expecting the outputted CSV header data to read out as column 1, column 2, column 3. But instead it reads out as column 1, column 3, column 2 as if the columns are appending left to right instead of merging MyClassB.some_string1 inbetween MyClassA.some_string1 and MyClassA.some_string2 columns. Am I missing something in the mapping configuration?