在Automapper映射中使用Discard变量

时间:2019-07-16 09:38:47

标签: c# automapper

我需要使用Automapper映射将逗号分隔的字符串变量安全地转换为int列表。

在Automapper的6.2.2版本中,我这样做的是:

cfg.CreateMap<FilterRequest, Filter>()
.ForMember(dest => dest.SomeIds, opt => opt.ResolveUsing(src => !string.IsNullOrEmpty(src.SomeIds) ? src.SomeIds.Split(',').Where(x => int.TryParse(x, out _)).Select(int.Parse).ToList() : null));

,但是将Automapper升级到版本8.1.1之后,ResolveUsing方法与MapFrom方法合并。 当我尝试使用MapFrom替换我的映射时:

cfg.CreateMap<FilterRequest, Filter>()
.ForMember(dest => dest.SomeIds, opt => opt.MapFrom(src => !string.IsNullOrEmpty(src.SomeIds) ? src.SomeIds.Split(',').Where(x => int.TryParse(x, out _)).Select(int.Parse).ToList() : null))

我在TryParse中的丢弃变量有错误:表达式树可能不包含丢弃

如何在Automapper映射中使用丢弃变量?

1 个答案:

答案 0 :(得分:1)

您可以使用此重载:

void MapFrom<TResult>(Func<TSource, TDestination, TResult> mappingFunction);

cfg.CreateMap<FilterRequest, Filter>()
    .ForMember(
        dest => dest.SomeIds,
        opt => opt.MapFrom((src, dest) => src.SomeIds
            .Split(',')
            .Where(x => int.TryParse(x, out _))
            .Select(int.Parse)
            .ToList()));