【问题标题】:C# AutoMapper map array of strings into List of objectsC# AutoMapper 将字符串数组映射到对象列表中
【发布时间】:2021-09-12 18:29:53
【问题描述】:

您好,我正在尝试将字符串数组从一个类映射到另一个结构,使用 AutoMapper 有点新。

它应该看起来像这样:SourceClass.Numbers -> new DestClass.ListClass { Numbers }

    public class SourceClass
    {
        public string[] Numbers;
    }

    public class DestClass
    {
        public List<ListClass> ListOfNumbers;
    }

    public class ListClass
    {
        public string Number;
    }

   cfg.CreateMap<ETOLL_212, Etoll212Request>().ForMember(x => x.ListOfNumbers, y => y.Ignore())
                                              .AfterMap((src, dest) =>
                                              {
                                                        dest.ListOfNumbers.AddRange(src.Numbers.ToList()
                                                            .Select(x =>
                                                            {
                                                                new DestClass{ Number = x.ToString() };
                                                            }).ToList());
                                              });

【问题讨论】:

  • 您在示例中留下了一些原始类名,需要修改吗?

标签: c# arrays .net list automapper


【解决方案1】:

由于源和目标属性名称不匹配,您需要为它们定义显式映射:

cfg.CreateMap<SourceClass, DestClass>()
    .ForMember(
        dest => dest.ListOfNumbers,
        opt => opt.MapFrom(src => src.Numbers));

另外,由于项目类型不匹配,您需要定义另一个映射:

cfg.CreateMap<string, ListClass>()
    .ForMember(
        dest => dest.Number,
        opt => opt.MapFrom(src => src));

因为ListOfNumbersNumbers都是集合类型,所以AutoMapper可以使用上面的映射来映射每一项:https://docs.automapper.org/en/stable/Lists-and-arrays.html

【讨论】:

  • 完美运行,非常感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-06
  • 2018-05-29
  • 2022-11-16
  • 2019-04-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多