C# 具有EF导航属性的自动映射

C# 具有EF导航属性的自动映射,c#,entity-framework,automapper,C#,Entity Framework,Automapper,我正在尝试使用EF的导航属性映射两个集合 Collection.Items是一个列表 CollectionDTO具有名为CollectionItem的交叉联接表的导航属性,该交叉联接表具有另一个指向项的导航属性 我希望每个CollectionDTO.CollectionItem.Item映射到Collection.Item 我试过这个,但我想不出来 有人能帮忙吗 var mapperConfig = new MapperConfiguration(cfg => { // Creat

我正在尝试使用EF的导航属性映射两个集合

Collection.Items
是一个
列表

CollectionDTO
具有名为
CollectionItem
的交叉联接表的导航属性,该交叉联接表具有另一个指向
项的导航属性

我希望每个
CollectionDTO.CollectionItem.Item
映射到
Collection.Item

我试过这个,但我想不出来

有人能帮忙吗

var mapperConfig = new MapperConfiguration(cfg =>
{
    // CreateMap<source, destination>()    
    cfg.CreateMap<Collection, CollectionDTO>()
        .ForMember(dest => dest.Items,
                   opts => opts.MapFrom(src =>
                       src.CollectionItems.Where(x => x.CollectionId == src.Id).ToList().ForEach(ci => ci.Item)));

});
var-mapperConfig=新的MapperConfiguration(cfg=>
{
//CreateMap()
cfg.CreateMap()
.FormMember(目标=>目标项目,
opts=>opts.MapFrom(src=>
其中(x=>x.CollectionId==src.Id).ToList().ForEach(ci=>ci.Item));
});

您可以使用如下方式:

// CreateMap<source, destination>()    
    cfg.CreateMap<Collection, CollectionDTO>()
       .ForMember(dest => dest.Items,
                   opts => opts.MapFrom(src =>
                       src.CollectionItems.Select(ci=>ci.Item).ToList()));

第二个选项给了我编译错误,但第一个选项的效果非常好!谢谢不客气。这就是我猜测的,
CollectionItems
表示一个连接表,
Item
是一个参考导航属性。
// CreateMap<source, destination>()    
    cfg.CreateMap<Collection, CollectionDTO>()
       .ForMember(dest => dest.Items,
                   opts => opts.MapFrom(src =>
                       src.CollectionItems.SelectMany(ci=>ci.Item).ToList()));