C# 使用automapper填充列表属性

C# 使用automapper填充列表属性,c#,entity-framework,automapper,C#,Entity Framework,Automapper,我有一个EF对象(分析),我正在使用automapper将其映射到数据传输对象(分析)。我能够通过使用获取填充的AssociationValue、AssociationCode、AssociationName和AssociationComments属性 Mapper.Map<IEnumerable<Assay>, IEnumerable<AssayDTO>>(assays); Mapper.Map(分析); 如果此值是基于分析ID的单独查询,如何使用aut

我有一个EF对象(分析),我正在使用automapper将其映射到数据传输对象(分析)。我能够通过使用获取填充的AssociationValue、AssociationCode、AssociationName和AssociationComments属性

Mapper.Map<IEnumerable<Assay>, IEnumerable<AssayDTO>>(assays);
Mapper.Map(分析);
如果此值是基于分析ID的单独查询,如何使用automapper填充分析数据到基因属性 我希望AssayDTO Genes属性包含每个分析的基因列表

    public partial class Assay
    {           
        public int AssayID { get; set; }
        public string AssayCode { get; set; }
        public string AssayName { get; set; }
        public string AssayComments { get; set; }
        public long ModifID { get; set; }
        public byte[] LAST_UPDATED_TIMESTAMP { get; set; }
    }

    public class AssayDTO
    {
        public string AssayValue { get; set; }
        public string AssayCode { get; set; }
        public string AssayName { get; set; }
        public string AssayComments { get; set; }

        public IEnumerable<string> Genes { get; set; }
    }


    IEnumerable<AssayDTO> dto = null;
    var assays = _assayRepository.GetAssays();

    Mapper.CreateMap<Assay, AssayDTO>()
    dto = Mapper.Map<IEnumerable<Assay>, IEnumerable<AssayDTO>>(assays);
公共部分类分析
{           
公共ID{get;set;}
公共字符串代码{get;set;}
公共字符串名称{get;set;}
公共字符串{get;set;}
公共长ModifID{get;set;}
公共字节[]上次更新的时间戳{get;set;}
}
公共类分析
{
公共字符串值{get;set;}
公共字符串代码{get;set;}
公共字符串名称{get;set;}
公共字符串{get;set;}
公共IEnumerable基因{get;set;}
}
IEnumerable dto=null;
var assays=_assayRepository.GetAssays();
Mapper.CreateMap()
dto=Mapper.Map(分析);

您可以这样配置映射:

Mapper.CreateMap<Assay,AssayDto>()
      .ForMember(dto => 
            dto.Genes, 
            m => m.MapFrom(a => GenesList // your separate list of genes
                                .Where(g => g.AssayID == a.AssayID)
                                .Select(g => g.Name)));
Mapper.CreateMap()
.FormMember(dto=>
dto.基因,
m=>m.MapFrom(a=>GenesList//
.其中(g=>g.AssayID==a.AssayID)
.选择(g=>g.Name));
顺便说一句,就我个人而言,我总是喜欢这种形式的陈述:

dtos = assays.Select(a => Mapper.Map<AssayDTO>(a));
dtos=analysis.Select(a=>Mapper.Map(a));

您可以将其缩短为分析。选择(Mapper.Map)