2011-06-17 5 views
9

У меня есть IList<AdminVAT> и я хотел бы скопировать эту коллекцию IList<AdminVATDto> коллекцииAutoMapper: Копировать IList <> в IList <>

Я попытался это:

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, культура = нейтральной, PublicKeyToken = NULL]] для System.Collections.Generic.IList `1 [[AdminVATDTO, eSIT.GC.WebUI, Ve rsion = 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)) 

ответ

19

Определим отображение только между простыми типами, как объяснено в documentation:

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

Тогда вы сможете конвертировать между списками, коллекциями, перечислимых этих типов:

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

Я попробовал это я думать. Тип res: «IList , IList >», нужен IList

+0

@ Kris-I, вы, должно быть, попробовали что-то еще. Тип 'res', как показано в моем примере, -' IList '. Я обновил свой ответ, чтобы сделать это более понятным, вместо использования 'var'. –

+0

@Darin Вы правы, CodeRush, когда я делаю «переменную Delcare», дайте мне: IList , IList > –

Смежные вопросы