C# 如何使用AutoMapper将客户数据从列表映射到客户类

C# 如何使用AutoMapper将客户数据从列表映射到客户类,c#,automapper,C#,Automapper,我试图用下面的方法将客户数据从列表映射到客户类,但没有得到正确的结果。该程序不会给出任何错误,而是生成具有空值的客户数据 using AutoMapper; List<Customer> oCust = new List<Customer>(); oCust.Add(new Customer { Name = "Rajan", Salary = 200, CountryCode = "GB" }); oCust.Add(new Custo

我试图用下面的方法将客户数据从列表映射到客户类,但没有得到正确的结果。该程序不会给出任何错误,而是生成具有空值的客户数据

    using AutoMapper;

    List<Customer> oCust = new List<Customer>();
    oCust.Add(new Customer { Name = "Rajan", Salary = 200, CountryCode = "GB" });
    oCust.Add(new Customer { Name = "Ari", Salary = 200, CountryCode = "US" });
    oCust.Add(new Customer { Name = "Dib", Salary = 200, CountryCode = "CA" });

    var oCustomer = oCust.Where(x => x.CountryCode == "US").ToList(); ;

    Mapper.CreateMap<List<Customer>, Customer>();
    Customer viewModel = Mapper.Map<List<Customer>, Customer>(oCustomer);
使用AutoMapper;
List oCust=新列表();
oCust.Add(新客户{Name=“Rajan”,工资=200,CountryCode=“GB”});
oCust.Add(新客户{Name=“Ari”,工资=200,CountryCode=“US”});
oCust.Add(新客户{Name=“Dib”,工资=200,CountryCode=“CA”});
var oCustomer=oCust.Where(x=>x.CountryCode==“US”).ToList();
CreateMap();
Customer viewModel=Mapper.Map(oCustomer);
我从这个url上读了一些关于
Automapper的文章http://www.codearsenal.net/2012/12/csharp-object-to-object-mapping-automapper.html#.VKqYbckpp68

请指导我如何仅使用
Automapper
解决上述问题

就像我说的,你不需要AutoMapper

这:

将填写一份客户名单。那么您需要一个客户:

Customer viewModel = Mapper.Map<List<Customer>, Customer>(oCustomer);
如果您真的认为必须从列表映射到单个实体(同样,在这种情况下也没有意义),请参阅

如果您确实必须使用AutoMapper将列表中的单个项目映射到单个项目,并且不想在列表中使用
FirstOrDefault()
,则可以执行类似操作(从,)拼凑而成:

Mapper.CreateMap()
.ForMember(t=>t.Name,
opt=>opt.MapFrom(s=>s.FirstOrDefault().Name))
.ForMember(t=>t.薪水,
opt=>opt.MapFrom(s=>s.FirstOrDefault().Salary))
.ForMember(t=>t.CountryCode,
opt=>opt.MapFrom(s=>s.FirstOrDefault().CountryCode));
var oCustomer=oCust.Where(x=>x.CountryCode==“US”).ToList();
Customer viewModel=Mapper.Map(oCustomer);
请注意,这仍然使用
.FirstOrDefault()
。尽管我会警告您:当源代码列表为空时,此代码将引发异常,不容易维护,并且会导致其他问题,其中一些问题可以使用自定义值解析器修复


我不会对你使用它负责,也不会支持你在使用它时提出的问题

我同意你的观点,当它可以用
FirstOrDefault()
来完成时,它没有任何意义,但我仍然非常好奇如何用Automapper来解决它。所以,请给你宝贵的时间来解决它与automapper。谢谢你花宝贵的时间来教育自己。阅读我答案中的链接。非常抱歉,我阅读了codeplex链接,但不了解如何使用
自定义值解析程序解决我的方案。如果可能,请为我的案例提供一个小样本代码。感谢您的回答,但我不明白在使用automapper从列表中填充customer对象后如何获取它?@Mou您已经有了代码:
customer viewModel=Mapper.Map(oCustomer)视图模型应具有哪些值?
Customer viewModel = Mapper.Map<List<Customer>, Customer>(oCustomer);
Customer viewModel = oCustomer.FirstOrDefault();
Mapper.CreateMap<List<Customer>, Customer>()
      .ForMember(t => t.Name, 
                 opt => opt.MapFrom(s => s.FirstOrDefault().Name))
      .ForMember(t => t.Salary, 
                 opt => opt.MapFrom(s => s.FirstOrDefault().Salary))
      .ForMember(t => t.CountryCode, 
                 opt => opt.MapFrom(s => s.FirstOrDefault().CountryCode));

var oCustomer = oCust.Where(x => x.CountryCode == "US").ToList(); ;
Customer viewModel = Mapper.Map<List<Customer>, Customer>(oCustomer);