使用AutoMapper将简单DTP转换为复杂DTO - c#

我有一个简单的DTO看起来像这样:

    public partial class Company
    {
        public string NAME { get; set; }        

        public string CONTACT_ADDR1_1 { get; set; }
        public string CONTACT_ADDR2_1 { get; set; }
        public string CONTACT_CITY_1 { get; set; }
        public string CONTACT_STATE_1 { get; set; }
        public string CONTACT_ZIP_1 { get; set; }

        public string CONTACT_ADDR1_2 { get; set; }
        public string CONTACT_ADDR2_2 { get; set; }
        public string CONTACT_CITY_2 { get; set; }
        public string CONTACT_STATE_2 { get; set; }
        public string CONTACT_ZIP_2 { get; set; }

        public string CONTACT_ADDR1_3 { get; set; }
        public string CONTACT_ADDR2_3 { get; set; }
        public string CONTACT_CITY_3 { get; set; }
        public string CONTACT_STATE_3 { get; set; }
        public string CONTACT_ZIP_3 { get; set; }
     }

而且我想使用AutoMapper将其转换为具有类型列表的Company对象。我将有一个已知的地址数(6)。我只列出了三个。

    public partial class CompanyDto
    {
        public string NAME { get; set; }
        public List<AddressDto> { get; set; }
     }

    public partial class AddressDto
    {
        public string CONTACT_ADDR1 { get; set; }
        public string CONTACT_ADDR2 { get; set; }
        public string CONTACT_CITY { get; set; }
        public string CONTACT_STATE { get; set; }
        public string CONTACT_ZIP { get; set; }
     }

这是我遇到的困难的代码块:

cfg.CreateMap<Company, CompanyDto>();

参考方案

        CreateMap<Company, CompanyDto>()
            .AfterMap((s, d) =>
            {
                d.ADDRESSES = new System.Collections.Generic.List<AddressDto>();
                d.ADDRESSES.Add(new AddressDto
                {
                    CONTACT_ADDR1 = s.CONTACT_ADDR1_1,
                    CONTACT_ADDR2 = s.CONTACT_ADDR1_2,
                    CONTACT_CITY = s.CONTACT_CITY_1,
                    CONTACT_STATE = s.CONTACT_STATE_1,
                    CONTACT_ZIP = s.CONTACT_ZIP_1
                });
                d.ADDRESSES.Add(new AddressDto
                {
                    CONTACT_ADDR1 = s.CONTACT_ADDR2_1,
                    CONTACT_ADDR2 = s.CONTACT_ADDR2_2,
                    CONTACT_CITY = s.CONTACT_CITY_2,
                    CONTACT_STATE = s.CONTACT_STATE_2,
                    CONTACT_ZIP = s.CONTACT_ZIP_2
                });
            });

上面的方法可能有效(并重复输入您拥有的地址数)。我必须承认我实际上并没有运行此代码,但是看起来可以通过

从列表中获取价值(C#UWP) - c#

我有课 public class RootObject { public int id { get; set; } public int parent_id { get; set; } public string status { get; set; } public string order_key { get; set; } public string …

对象返回null - java

摘要:Java的新手,尝试浏览其他帖子,但没有找到答案。我正在学习继承,并具有由Runner类扩展的AddressBook类。当我编写一个程序来测试继承时,我创建了一个Runner对象。如果获取第一个String参数,它将返回正常值,但是当我尝试获取第二个String参数时,它将返回null。题:为什么第二个参数返回null?package Assignme…

编程练习 - public class HelloWo

public class HelloWorld {    public static void main(String[] args) {        // 变量保存成绩        int score = 53;         // 变量保存加分次数        int count = 0;        //打印输出加分前成绩         S…

Java入门第一季 - public class HelloWo

public class HelloWorld {    public static void main(String[] args) {                // 变量保存成绩        int score = 53;                 // 变量保存加分次数        int count = 0;        //打印输…

如何在属性中搜索特定值? - c#

我有以下实体框架模型:public class Person { public int Id { get; set; } public string Name { get; set; } public List<Email> EmailAddresses { get; set; } } public class Email { public in…