如何在Automapper中将两个列表映射到一个列表?

时间:2015-04-30 18:45:15

标签: c# .net automapper

我有以下设置:

public class ClassA
{
    public int Id { get; set; }
    public int JoinId { get; set; }
}

public class ClassB
{
    public string Name { get; set; }
    public int JoinId { get; set; }
}

public class ClassC
{
    public int Id { get; set; }
    public string Name { get; set; }
    public int JoinId { get; set; }
}

我有ClassA列表和ClassB

列表

我想要一个使用Automapper的ClassC列表。结果应该是JoinId上的完全外部加入。

我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:0)

为简单起见,我假设这些包含在另一个类中:

class Original 
{
    List<ClassA> ClassAs { get; set; }
    List<ClassB> ClassBs { get; set; }
}

class Result
{
    List<ClassC> ClassCs { get; set; }
}

您可以使用

将前者映射到后者
Mapper.CreateMap<Original, Result>().ForMember(x => x.ClassCs, 
    x => x.MapFrom(x.ClassAs.Join(
                        y.ClassBs, 
                        xEntry => xEntry.JoinId, 
                        yEntry => yEntry.JoinId, 
                        (xEntry, yEntry) => new ClassC { 
                                              Id = xEntry.Id, 
                                              Name = yEntry.Name, 
                                              JoinId = xEntry.JoinId});