Это то, с чем я закончил в do AutoMapper вещь секция
public virtual List<T> GetList<T>(string mainSql)
{
DataTable ldt = new DataTable();
StartReader(mainSql); //load a reader with data.
ldt.Load(reader);
DataTableReader rdr = ldt.CreateDataReader();
return (List<T>)Mapper.Map<IDataReader, IList<T>>(rdr);
}