如何将列表自动化到另一个列表

时间:2016-06-17 09:55:31

标签: c# wpf automapper

在我的c#wpf dekstop app中使用automapper。

我有这两个型号:

public class A
{
    public string Field1 {get; set;}
    public string Field2 {get; set;}
}

public class B
{
    public string Field1 {get; set;}
    public string Field2 {get; set;}
}

我通过db查询填充来创建A类集合,所以:

list<A> collectionA = DB.GetQueryResults();

我现在想转移&#39;使用AutoMapper将此集合添加到B类..

var configJobProfile = new MapperConfiguration(cfg => cfg.CreateMap<A, B>());
var mapperJobProfile = configJobProfile.CreateMapper(); 
collectionB = mapperJobProfile.Map<B>(collectionA);

但是我得到了一个映射错误,其中snot告诉了我很多。所以我假设这种方法是错误的?

我该怎么做?

由于

屏幕 - enter image description here已弃用功能的拍摄:

2 个答案:

答案 0 :(得分:2)

您已经设置了A - &gt;的映射。 B,但您尝试执行的地图是一个列表为As - &gt; B列表。

为列表设置映射,并且应该使用该技巧,即

var configJobProfile = new MapperConfiguration(cfg => cfg.CreateMap<List<A>, List<B>>());
var mapperJobProfile = configJobProfile.CreateMapper();
List<B> collectionB = mapperJobProfile.Map<List<B>>(collectionA);

答案 1 :(得分:0)

using System;
using AutoMapper;

public class Foo
{
    public string A { get; set; }
    public int B { get; set; }  
}

public class Bar
{
    public string A { get; set; }
    public int B { get; set; }  
}

public class Program
{
    public static void Main()       
    {
        Mapper.CreateMap<Foo,Bar>();

        var foo = new Foo { A="test", B=100500 };

        var bar = Mapper.Map<Bar>(foo);

        Console.WriteLine("foo type is {0}", foo.GetType());
        Console.WriteLine("bar type is {0}", bar.GetType());

        Console.WriteLine("foo.A={0} foo.B={1}", foo.A, foo.B);
        Console.WriteLine("bar.A={0} bar.B={1}", bar.A, bar.B);
    }
}

以下是Tutorial

的链接

关于@Romi Petrelis Automapper says Mapper.Map is obsolete, global mappings?

的诽谤警告检查答案