繁体   English   中英

Automapper - Map 字符串列表到具有字符串属性的 object 列表

[英]Automapper - Map list of string to list of object with string property

我有自动映射器的问题

这里我有两个对象:

Object 1:

public class First
{
    ......

    public IList<string> ImportantList{ get; set; }

    ......
}

Object 2:

public class Second
{
    .....

    public IList<ImportantListClass> ImportantList{ get; set; }

    .....
}

class:

public class ImportantListClass
{
    public string Name{ get; set; }
}

我尝试使用自动映射器到 map 第一个 object 到第二个,但我的目的地重要列表是空的。 我在目标 class 中有相同数量的 object,但名称属性是 null。

我尝试:

CreateMap<Second, First>()
            .ForMember(z => z.ImportantList, map => map.MapFrom(z => 
             z.ImportantList.Select(x => x.Name).ToList()))
            .ReverseMap();

但这并没有改变任何事情他们有更好的方法吗?

@编辑

我添加这个:

        CreateMap<First, Second>();
        CreateMap<ImportantListClass, string>()
            .ConvertUsing(source => source.Name);
        CreateMap<string, ImportantListClass>()
                .ForMember(z => z.Name, z=> z.MapFrom(d => d));

感谢帮助!

您需要使用ConvertUsing并将 map 从ImportantListClass添加到string

var config = new MapperConfiguration(cfg =>
{
    cfg.CreateMap<Second, First>();
    cfg.CreateMap<ImportantListClass, string>()
    .ConvertUsing(source => source.Name);
});

var mapper = config.CreateMapper();

var second = new Second
{
    Id = 22,
    ImportantList = new List<ImportantListClass>
    {
        new ImportantListClass { Name = "Name1" },
        new ImportantListClass { Name = "Name2" }
    }
};

var first = mapper.Map<First>(second);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM