0

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?

Anthony R
  • 89
  • 1
  • 10

0 Answers0