Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用Automapper可以使用源中的特性值从对象列表映射到单个对象_C#_Automapper - Fatal编程技术网

C# 使用Automapper可以使用源中的特性值从对象列表映射到单个对象

C# 使用Automapper可以使用源中的特性值从对象列表映射到单个对象,c#,automapper,C#,Automapper,资料来源: 公共类消息 { 公共日期时间接受日期{get;set;} 公共列表价格详细信息{get;set;} } 公共类价格详情 { 公共字符串ServiceCode{get;set;} 公共字符串ServiceValue{get;set;} } 目的地: public class Message { public DateTime AcceptedDate { get; set; } public List<PriceDetail> PriceDetails

资料来源:

公共类消息
{
公共日期时间接受日期{get;set;}
公共列表价格详细信息{get;set;}
}
公共类价格详情
{
公共字符串ServiceCode{get;set;}
公共字符串ServiceValue{get;set;}
}
目的地:

public class Message 
{
    public DateTime AcceptedDate { get; set; }
    public List<PriceDetail> PriceDetails { get; set; }
}

public class PriceDetail 
{
    public string ServiceCode { get; set; }
    public string ServiceValue { get; set; }
}
公共类GroupEntity
{
公共日期时间接受日期{get;set;}
公共列表计划{get;set;}
}
公共类行星
{
公共字符串metalevel{get;set;}
公共字符串MdCode{get;set;}
公共字符串RxCode{get;set;}
公共字符串百分比更改{get;set;}
}
来源价格详细信息可能类似于:

  • ServiceCode=“MetalLevel”
  • ServiceValue=“黄金”
我需要将价格细节映射到行星,例如:

  • 如果PriceDetail.ServiceCode=“MetalLevel”,则将其映射到PlanEntity.MetalLevel
  • 如果PriceDetail.ServiceCode=“RxCode”,则将其映射到PlanEntity.RxCode
  • 等等
我知道映射器中会有硬编码逻辑,但不确定如何或是否可以使用automapper。非常感谢任何提示或建议。

CreateMap()
public class GroupEntity 
{
    public DateTime AcceptedDate { get; set; }
    public List<PlanEntity> Plans { get; set; }
}

public class PlanEntity 
{
    public string MetalLevel { get; set; }
    public string MdCode { get; set; }
    public string RxCode { get; set; }
    public string PercentChange { get; set; }
}
.FormMember(dest=>dest.MetalLevel,opt=>{ opt.predition(src=>src.ServiceCode==“MetalLevel”); opt.MapFrom(src=>src.ServiceCode); }); CreateMap() .ForMember(dest=>dest.RxCode,opt=>{ opt.predition(src=>src.ServiceCode==“RxCode”); opt.MapFrom(src=>src.ServiceCode); });
您需要在要映射项目的位置编写此逻辑。在mapper中,这是不可能的。
CreateMap<PriceDetail, PlanEntity>()
           .ForMember(dest => dest.MetalLevel, opt => {
               opt.PreCondition(src => src.ServiceCode=="MetalLevel");
               opt.MapFrom(src => src.ServiceCode);
           });
CreateMap<PriceDetail, PlanEntity>()
           .ForMember(dest => dest.RxCode, opt => {
               opt.PreCondition(src => src.ServiceCode=="RxCode");
               opt.MapFrom(src => src.ServiceCode);
           });