1

リストが空で null ではない場合にリスト マッピングを無視する方法。

source.Divisions (IEnumerable) が null または空の場合、des.Divisions はマップされません。

 Mapper.CreateMap<Model.Event, DataContracts.Event>()
   .ForMember(des => des.Divisions, e => e.MapFrom(source => source.Divisions))

以下の解決策を見つけました。

  Mapper.CreateMap<Model.Event, DataContracts.Event>()
       .ForMember(des => des.Divisions, e => { 
e.Condition(source => !source.Divisions.IsNullOrEmpty()));
e.MapFrom(source => source.Divisions));
});

上記をさらに単純化する方法はありますか?

たとえば、拡張メソッドを作成します。

Mapper.CreateMap<Model.Event, DataContracts.Event>()
           .ForMember(des => des.Divisions, e => e.MapListIfNotEmpty(source => source.Divisions));
4

1 に答える 1

1

この拡張機能を作成しました。お役に立てば幸いです。

 public static void MapListIfNotEmpty<TSource, TMapFrom>(this IMemberConfigurationExpression<TSource> map,
        Func<TSource, IEnumerable<TMapFrom>> mapFrom)
    {
        map.Condition(src => !mapFrom(src).IsNullOrEmpty());

        map.MapFrom(mapFrom);
    }

次のように使用できます。

 Mapper.CreateMap<Model.Event, DataContracts.Event>()
                .ForMember(des => des.Divisions, e => e.MapListIfNotEmpty(source => source.Geographies));
于 2013-08-29T09:49:04.783 に答える