Automapper,如果属性值以值开头,则计算值

时间:2017-03-27 14:27:52

标签: c# .net automapper

我想创建一个在源和目标中使用相同类的映射器(复制对象),但如果“ColumnName”的属性值以'*'开头,则将“Value”属性值加倍。 这是班级:

public class CustomerDatabaseParameter
{

    public string ColumnName { get; set; }

    public double Value { get; set; }

}

这是我需要的结果:

示例1:

From:
ColumnName = "*xxxx";
Value = 50.0;

To:
ColumnName = "*xxxx";
Value = 100.0;

示例2:

From:
ColumnName = "www";
Value = 50.0;

To:
ColumnName = "www";
Value = 50.0;

1 个答案:

答案 0 :(得分:0)

您可以在ResolveUsing中添加任何您喜欢的表达式。只需确保返回与目标类型匹配的类型。

CreateMap<CustomerDatabaseParameter, CustomerDatabaseParameter>()
    .ForMember(dest => dest.Value, o => o.ResolveUsing(
         src => src.ColumnName.StartsWith("*") ? (src.Value * 2) : src.Value
     ));