AutoMapper:复制IList<>到IList<>

时间:2011-06-17 11:10:42

标签: c# automapper

我有IList<AdminVAT>,我想将此收藏集复制到IList<AdminVATDto>集合

我试过了:

IList<AdminVAT> listAdminVAT = new AdministrationService(session).ListDecimal<AdminVAT>();
AutoMapper.Mapper.CreateMap<IList<AdminVAT>, List<AdminVATDTO>>();
var res = AutoMapper.Mapper.Map<IList<AdminVAT>, IList<AdminVATDTO>>(listAdminVAT);

我收到此例外:

  

尝试将System.Collections.Generic.IList`1 [[AdminVAT,eSIT.GC.DataModel,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null]]映射到System.Collections.Generic.IList`1 [[AdminVATDTO,eSIT.GC.WebUI,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null]]。

感谢。

UPDATE1

public class AdminVAT : IAdminDecimal
{
    public virtual int Id { get; set; }
    public virtual int Code { get; set; }
    public virtual decimal Value { get; set; }
}
public class AdminVATDTO : AdminVAT
{
    [DisplayFormat(DataFormatString = "{0:n2}", ApplyFormatInEditMode = true)]
    public override decimal Value { get; set; }
}

我的下拉列表中仍有5位小数...

控制器:

IList<AdminVAT> listAdminVAT = new AdministrationService(session).ListDecimal<AdminVAT>();
AutoMapper.Mapper.CreateMap<AdminVAT, AdminVATDTO>();
model.ListVAT = AutoMapper.Mapper.Map<IList<AdminVAT>, IList<AdminVATDTO>>(listAdminVAT);

HTML:

@Html.DropDownList("ddVAT", new SelectList(Model.ListVAT, "Id", "Value", Model.Estimation.AdminVAT))

1 个答案:

答案 0 :(得分:19)

仅在简单类型之间定义映射,如documentation

中所述
AutoMapper.Mapper.CreateMap<AdminVAT, AdminVATDTO>();

然后,您将能够在列表,集合,这些类型的枚举之间进行转换:

IList<AdminVATDTO> res = AutoMapper.Mapper.Map<IList<AdminVAT>, IList<AdminVATDTO>>(listAdminVAT);