c# - "Missing map from System.Char to System.String"AutoMapper 错误

标签 c# asp.net-mvc datatables automapper

我正在尝试映射我的 Box反对我的 BoxedElectrodesRowModel .
Box对象有一个属性 SerialNumbers ,并且每个都有自己的属性 SerialNumberName .我正在尝试映射 SerialNumberName 的列表s 到我的 BoxedElectrodeRowModel 中的字符串列表叫 SerialNumbers .

AutoMapper 代码

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

这是我现在遇到的错误。我不知道它指的是什么“字符”。

Missing map from System.Char to System.String. Create using Mapper.CreateMap



所有这些的目的是使用 DataTables 创建一个表格,显示每个 Box及其列表 SerialNumbers在每一行上,如果有帮助的话。一切都已编码,但我在运行时不断收到上述错误。

编辑:这是我正在映射的类(class)。我正在尝试映射 BoxIdBoxId , DateCreatedDateCreated ,以及 SerialNumberName从每个 SerialNumber (在列表中)到 SerialNumbers .

盒子 (自动生成)
public partial class Box
{
    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
    public Box()
    {
        this.SerialNumbers = new HashSet<SerialNumber>();
    }

    public int BoxID { get; set; }
    public System.DateTime DateCreated { get; set; }
    public Nullable<System.DateTime> DateShipped { get; set; }
    public string TrackingNumber { get; set; }
    public Nullable<System.DateTime> DateReceived { get; set; }
    public bool Active { get; set; }

    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
    public virtual ICollection<SerialNumber> SerialNumbers { get; set; }
}

序列号 (这是每个“盒子”的属性,也是自动生成的代码)
public partial class SerialNumber
{
    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
    public SerialNumber()
    {
        this.Comments = new HashSet<Comment>();
        this.WIPHistories = new HashSet<WIPHistory>();
    }

    public int SerialNumberID { get; set; }
    public int IncomingLotID { get; set; }
    public string SerialNumberName { get; set; }
    public string LamPurchaseOrder { get; set; }
    public string LamLineNumber { get; set; }
    public bool Refurbished { get; set; }
    public int WIPLocationID { get; set; }
    public int StatusID { get; set; }
    public int RouteSectionStepID { get; set; }
    public Nullable<int> RejectCategoryID { get; set; }
    public Nullable<int> BoxID { get; set; }

    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
    public virtual ICollection<Comment> Comments { get; set; }
    public virtual IncomingLot IncomingLot { get; set; }
    public virtual RejectCategory RejectCategory { get; set; }
    public virtual Status Status { get; set; }
    public virtual WIPLocation WIPLocation { get; set; }
    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
    public virtual ICollection<WIPHistory> WIPHistories { get; set; }
    public virtual Box Box { get; set; }
    public virtual RouteSectionStep RouteSectionStep { get; set; }
}

盒装电极行模型
public class BoxedElectrodesRowModel
{
    public int BoxId { get; set; }
    public List<string> SerialNumbers { get; set; } // change from List to ICollection if there are problems
    public Nullable<System.DateTime> DateCreated { get; set; }
}

最佳答案

您的问题是 FirstOrDefault()称呼。因为它只返回第一个 string从序列号名称。但字符串是 IEnumerable<char> .当 AutoMapper 看到两个可枚举项时,它会尝试映射它们。在您的情况下,它将是 IEnumerable<char>IEnumerable<string> .

要解决此问题,请删除 FirstOrDefault()称呼。也因此 AutoMapper 知道如何映射 IEnumerable<T>List<T>您不需要手动创建列表。

opts => opts.MapFrom(src => src.SerialNumbers.Select(t => t.SerialNumberName))

关于c# - "Missing map from System.Char to System.String"AutoMapper 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41708519/

相关文章:

c# - 如何使用 BasicEffect 在 XNA 中绘制模型

c# - 在 Visual Studio 2013 中生成 .edmx EF6 的问题

c# - 如何使用 Slapper.AutoMapper 映射 IList<int>

asp.net-mvc - 如何支持在经典模式下运行的池的 WebApi2 url 中的点

asp.net-mvc - 在 Kendo 窗口中加载 Kendo 网格

javascript - 将空值始终排序到数据表中的顶部

c# - COM Word Selection TypeText 带换行符

c# - 实体对象不能被 IEntityChangeTracker 的多个实例引用无法修复

javascript - dataTables 更改 ajax 调用的数据

javascript - 使用 Vue 语法的 jQuery DataTables 子行