オートマトンを使用してオブジェクトのコレクションをコンクリートタイプの単一のオブジェクトにマップするにはどうすればよいですか?Automapper Map ICollection <T>を単一のコンクリートオブジェクトに変換する
サンプル:
モデル:
public class SystemOptionsModel
{
public string OptionID { get; set; }
public string OptionValue { get; set; }
}
DTO:
public class SystemOptionsDto
{
public Deliverymode? Deliverymode { get; set; }
}
私は、次のマッピング設定で1 SystemOptionsDtoにSystemOptionsModelのICollectionををマッピングしてみました:
CreateMap<SystemOptionsModel, SystemOptionsDto>()
.ForMember(dest => dest.Deliverymode, o =>
{
o.Condition((src) => { return src.OptionID.Trim().ToLower().Equals("someString"); });
o.MapFrom(srs => (Deliverymode)Enum.Parse(typeof(Deliverymode), srs.OptionValue.Trim()));
});
結果として、ソースコレクション内の各Itemに対して1つのItemを持つDTOのリストを取得しました。
CreateMap<SystemOptionsModel, SystemOptionsDto>()
.ForMember(dest => dest.Deliverymode, o =>
{
o.MapFrom(src => src.OptionID.Trim().ToLower().Equals("someString") ? (Deliverymode?)Enum.Parse(typeof(Deliverymode), src.OptionValue.Trim()) : null);
});
結果もSystemOptionsDtoの一覧ではなく、単一のSystemOptionsDtoです:
は私もこれを試してみました。
この 'src.OptionID.Trim()TOLOWER()に等しい( "someString")は'常に偽となります。 ;) –
もちろん、監督:)... – macostobu