关于列表属性的Automapper新手问题

时间:2010-01-08 12:55:39

标签: automapper

作为AutoMapper的新粉丝,我将如何使用它来执行以下操作:

鉴于以下类,我想从Group创建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; }
}

由于

约瑟夫

2 个答案:

答案 0 :(得分:7)

您可以做的另一件事是从Item创建转换器 - &gt;字符串:

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

现在,您无需在群组中执行任何特殊操作 - &gt; FlattenedGroup地图:

Mapper.CreateMap<Group, FlattenedGroup>();

那就是你需要的全部。

答案 1 :(得分:1)

尝试一下,您可以使用Linq和lambda表达式将FlattenedGroup中的字符串列表映射到Group中的标题。

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添加到使用语句