AutoMapper を使用してデータテーブルをリストにマップしています。
私のシナリオでは、外部変数に応じてデータテーブルの列が変わる場合があります。
次の方法で、データテーブルをオブジェクトに正常にマップできます。
AutoMapper.Mapper.CreateMap<IDataReader, Person>();
DataTableReader dtr = myDataTable.CreateDataReader();
List<Person> people = new List<Person>();
people = AutoMapper.Mapper.Map<List<Person>>(dtr);
これはすべてうまくいきます。ただし、テーブルに存在する場合と存在しない場合がある列の整数に変換する必要があるプロパティがいくつかあります。
例:
AutoMapper.Mapper.CreateMap<IDataReader, Person>()
.FromMember(dest => dest.NumberOfOrders, opt => opt.MapFrom(src => Convert.ToInt32(src["HowManyOrders"])));
列「HowManyOrders」が常にテーブルに存在するとは限らないため、列が存在するかどうかを確認し、存在する場合は値を変換するにはどうすればよいですか?