如何将List<string>
映射到List<Class>
?
Usecase:来自Webservice我得到一个带有字符串列表的类但是在我的MVC Viewmodel中,我希望使用具有单个属性的Class,它具有字符串的值。这样我就可以向属性添加验证属性。
我有办法将List转换为List,但是我无法通过其他方式工作。
任何简单的解决方案?
答案 0 :(得分:7)
使用AutoMapper执行此操作的方法是使用.ConstructUsing
:
Mapper.CreateMap<string, Class>()
.ConstructUsing(str => new Class { MyProp = str });
答案 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代码)
但我认为这可以作为过度工程的教科书范例。就像丹尼尔的例子一样。