C# 如何将一个列表自动映射到另一个列表

C# 如何将一个列表自动映射到另一个列表,c#,wpf,automapper,C#,Wpf,Automapper,在我的c#wpf dekstop应用程序中使用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的集合,

在我的c#wpf dekstop应用程序中使用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();
已弃用函数的列表快照:

正在使用系统;
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);
    }
}
使用自动制版机; 公开课Foo { 公共字符串A{get;set;} 公共int B{get;set;} } 公共类酒吧 { 公共字符串A{get;set;} 公共int B{get;set;} } 公共课程 { 公共静态void Main() { CreateMap(); var foo=newfoo{A=“test”,B=100500}; var bar=Mapper.Map(foo); WriteLine(“foo类型为{0}”,foo.GetType()); WriteLine(“bar类型为{0}”,bar.GetType()); WriteLine(“foo.A={0}foo.B={1}”,foo.A,foo.B); WriteLine(“bar.A={0}bar.B={1}”,bar.A,bar.B); } }
这里是链接到

关于@Romi Petrelis使用系统的去润滑警告检查答案; 使用自动制版机; 公开课Foo { 公共字符串A{get;set;} 公共int B{get;set;} } 公共类酒吧 { 公共字符串A{get;set;} 公共int B{get;set;} } 公共课程 { 公共静态void Main() { CreateMap(); var foo=newfoo{A=“test”,B=100500}; var bar=Mapper.Map(foo); WriteLine(“foo类型为{0}”,foo.GetType()); WriteLine(“bar类型为{0}”,bar.GetType()); WriteLine(“foo.A={0}foo.B={1}”,foo.A,foo.B); WriteLine(“bar.A={0}bar.B={1}”,bar.A,bar.B); } }
这里是链接到


关于@Romi Petrelis的去擦痕警告检查答案

您已从a->B设置映射,但您尝试执行的映射是针对As->Bs列表的映射

为列表设置一个映射,这应该可以做到

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

您已经从a->B设置了映射,但是您尝试执行的映射是针对As->B列表的映射

为列表设置一个映射,这应该可以做到

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

映射错误是什么?请参阅内部异常。映射错误是什么?请参阅内部异常。@AndrewSimpson关于此已弃用代码的信息在哪里?您好,如果我将该代码放入VS2015,我将得到一个弃用警告。我马上上传截图。嗨,刚刚上传。您需要在另一个选项卡中打开才能看到它better@mybirthname有趣。试一试:)@AndrewSimpson关于这个不推荐使用的代码的信息在哪里?嗨,如果我把代码放到VS2015中,我会得到一个不推荐使用的警告。我马上上传截图。嗨,刚刚上传。您需要在另一个选项卡中打开才能看到它better@mybirthname有趣。我将试一试:)谢谢,我以前做过(我想我做过!)它产生了一个错误。这次没有错误,但没有记录,即使我知道有1条记录。将继续调查-谢谢Hanks,我以前做过(我想我做过!)但它产生了一个错误。这次没有错误,但没有记录,即使我知道有1条记录。将继续调查-谢谢