【问题标题】:Trying to map a property of an object to a string with AutoMapper尝试使用 AutoMapper 将对象的属性映射到字符串
【发布时间】:2017-05-24 09:35:21
【问题描述】:

我的对象Box 具有SerialNumbers 属性,它是<SerialNumber> 对象的列表(或ICollection)。我需要将每个SerialNumber.Name 属性映射到我的BoxedElectrodesRowModel 中的字符串列表中的一个字符串。

这是我的代码:

c.CreateMap<Box, BoxedElectrodesRowModel>()
    .ForMember(dest => dest.BoxId, opts => opts.MapFrom(src => src.BoxID))
    .ForMember(dest => dest.SerialNumbers, opts => opts.MapFrom(src => src.SerialNumbers))
    .ForMember(dest => dest.DateCreated, opts => opts.MapFrom(src => src.DateCreated));

如果您注意到第三行,我正在尝试将dest.SerialNumbers(模型中的字符串列表)转换为src.SerialNumbers,这是SerialNumbers 的ICollection。不过,我特别需要 SerialNumbername 属性。我试过 src.SerialNumbers.Name 但 LINQ 不喜欢那样。

我尝试解决这个问题是在前一个块上方添加此代码:

c.CreateMap<SerialNumber, string>()
    .ConvertUsing(src => src.Name);

然后我收到错误“无法将 lambda 表达式转换为类型'字符串',因为它不是委托类型”。

我对 AutoMapper 真的很陌生,感觉自己在黑暗中四处游荡。有人可以帮我解决这个问题吗?

【问题讨论】:

    标签: c# asp.net-mvc linq lambda automapper


    【解决方案1】:

    只需将您的来源转换为列表。

    src.SerialNumbers.ToList()
    

    如果您需要嵌套属性,请先选择该属性。

    src.SerialNumbers.Select(t=>t.Name).ToList()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-11-26
      • 1970-01-01
      • 1970-01-01
      • 2017-04-07
      • 2015-08-13
      • 2011-04-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多