2010-01-08 88 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的到你使用的語句