c# - 自动映射器前提条件,如果 src 值为 0,则映射 null

标签 c# automapper

您好,我有一个简单的问题,我创建了一个映射器配置,如下所示:

CreateMap<ModifySystem, Entities.System>()
    .ForMember(dest => dest.IpAddress, opt => opt.MapFrom(src => IPAddress.Parse(src.IpAddress)))
    .ForMember(dest => dest.ApplicationId, opt =>
    {
        opt.PreCondition(src => src.ApplicationId > 0 || src.ApplicationId == null);
        opt.MapFrom(src => src.ApplicationId);
    })
    .ForMember(dest => dest.Id, opts => opts.Ignore());

当我得到的值大于 0 或 null(ApplicationId 可为空)时,它会起作用,但我想要的东西是,如果源值为 0,则将值设置为 null。

尝试了 opt.MapFrom(src => null); 但它没有按预期工作。如何在autommaper中解决这个问题。

最佳答案

就像你一样

.ForMember(dest => dest.IpAddress, opt => opt.MapFrom(src => IPAddress.Parse(src.IpAddress)))

您可以执行以下操作:

.ForMember(dest => dest.ApplicationId, opt => opt.MapFrom(src => src.ApplicationId == null || src.ApplicationId == 0 ? null : src.ApplicationId ))

关于c# - 自动映射器前提条件,如果 src 值为 0,则映射 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59949003/

相关文章:

c# - 命名空间 'Practices' 中不存在类型或命名空间名称 'Microsoft'

c# - .net 不可变对象(immutable对象)

silverlight - 相当于 silverlight 项目中的自动映射器

c# - 使用 Autofac 注入(inject)接口(interface)的特定实例

c# - AutoMapper:两个集合之间的映射与 'Ignore'

entity-framework - AutoMapper 映射 EF 关系好不好?

c# - AutoMapper:字符串到可为空的 int

c# - 如何确保 FirstOrDefault<KeyValuePair> 已返回值

C# - AsyncCallback 中的异常传播问题

c# - 从列表中选择未出现在第二个列表中的内容