2010-01-08 58 views
1

由于AutoMapper的一个新的风扇,我怎么会用它来执行以下操作:Automapper有关列表属性的新手问题

考虑以下类,我想从集团创建FlattenedGroup项目字符串的地图,其中列表Item的title属性。

public class Group 
{ 
    public string Category { get; set; } 
    public IEnumerable<Item> Items { get; set; } 
} 

public class Item 
{ 
    public int ID { get; set; } 
    public string Title { get; set; } 
} 


public class FlattenedGroup 
{ 
    public string Category { get; set; } 
    public IEnumerable<string> Items { get; set; } 
} 

感谢

约瑟夫

回答

7

你可以做的另一件事是从项目创建一个转换器 - >字符串:

Mapper.CreateMap<Item, string>().ConvertUsing(item => item.Title); 

现在你不不需要在你的团队中做任何特别的事情 - > FlattenedGroup map:

Mapper.CreateMap<Group, FlattenedGroup>(); 

这就是你需要的。

1

试试这个,你也许可以使用LINQ和lambda表达式来映射FlattenedGroup与组标题字符串列表。

Mapper.CreateMap<Group, FlattenedGroup>() 
       .ForMember(f => f.Category, opt => opt.MapFrom(g => g.Category)) 
       .ForMember(f => f.Items, opt => opt.MapFrom(g => g.Items.Select(d => d.Title).ToList())); 

请务必添加System.Linq的到你使用的语句