Automapper:将List <string>映射到List <class> </class> </string>

时间:2015-01-24 01:59:13

标签: automapper

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

Usecase:来自Webservice我得到一个带有字符串列表的类但是在我的MVC Viewmodel中,我希望使用具有单个属性的Class,它具有字符串的值。这样我就可以向属性添加验证属性。

我有办法将List转换为List,但是我无法通过其他方式工作。

任何简单的解决方案?

3 个答案:

答案 0 :(得分:7)

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

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

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

答案 1 :(得分:3)

您可以使用Linq轻松完成。

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

答案 2 :(得分:2)

可以这样做:

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代码)

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