I have a CSV with a single Header row. Some of the columns of each row need to map to one class while other columns of the row need to map to a different class.
I tried this but with no success:
using(var reader = new StreamReader(@"c:\temp\myfile.csv"))
{
    using(var csv = new CsvReader(reader))
    {
       csv.Configuration.RegisterClassMap<ClientMap>();
       csv.Configuration.RegisterClassMap<BookingMap>();
       var bookings = csv.GetRecords<Booking>();
       ... //iterate over bookings and write to Console
       reader.BaseStream.Position = 0;
       var clients = csv.GetRecords<Client>();
       ... //iterate over clients and write to Console
    }
}
Classes
public class Client {
   public string Firstname {get; set;}
   public string Lastname {get; set;}
   public AgesEnum Age {get; set;}
}
public class Booking {
    public string ExternalId {get; set;}
    public string Status {get; set;}
}
Maps
public class ClientMap : ClassMap<Client> 
{
   public ClientMap()
   {
       Map(m => m.Firstname).Name("FIRSTNAM");
       Map(m => m.Lastname).Name("LASTNAME");
       Map(m => m.Age).ConvertUsing(row =>{
          var age = row.GetField<int>("AGE");
          if(age < 2)
             return AgesEnum.Baby;
          if(age < 10)
             return AgesEnum.Young;
          if(age < 40)
             return AgesEnum.Middle;
          return AgesEnum.Old;
       } );
    }
}
public BookingMap : ClassMap<Booking>
{
    public BookingMap()
    {
        Map(b => b.ExternalId).Name("SYSID");
        Map(b => b.Status);
    }
}
What happens when I run this is that the bookings get returned fine and I can iterate over them.  However, I get an error on the GetRecords<Client>() line stating that 
The conversion cannot be performed. Text: 'Age' MemberType: TypeConverter: 'CsvHelper.TypeConversion.Int32Converter'
If I comment out all the code relating to Bookings and only perform the GetRecords<Client>(), I get no error.
Why won't this work?  Do I have to set up a whole new StreamReader?
 
     
    