自动映射器:将 List<string> 映射到 List<Class>

Automapper: map List<string> to List<Class>

如何将 List<string> 映射到 List<Class>

用例:我从 Webservice 得到一个带有字符串列表的 class,但在我的 MVC Viewmodel 中,我想要 Class 而不是单个 属性,它具有字符串的值。这样我就可以将验证属性添加到 属性.

我知道如何将 List 转换为 List,但是我无法通过其他方式工作。

有什么简单的解决办法吗?

您可以使用 Linq 轻松做到这一点。

var newList = oldList.Select(x => new Item(x)).ToList();

可以这样做:

void Main()
{
    AutoMapper.Mapper.CreateMap<string,A>()
              .ForMember(a => a.Name, m => m.MapFrom(s => s));

    new[] {"A", "B"}.Select (AutoMapper.Mapper.Map<A>).Dump();
}

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

(Linqpad 代码)

但我认为这可以作为过度工程的教科书示例。就像丹尼尔的例子一样。

使用 AutoMapper 执行此操作的方法是使用 .ConstructUsing:

Mapper.CreateMap<string, Class>()
    .ConstructUsing(str => new Class { MyProp = str });

示例: https://dotnetfiddle.net/0Vlc8b