2015-06-21 74 views
2

嗨,我看了看,只看到数组中的例子列出\集合,但没有其他方式。从一个集合到一个数组的映射

我有一个属性为AccIndex的集合,我想映射到 数组,其名称为AccIndex

我试过如下:

Mapper.CreateMap<AccountCollection, AcctArray[]>(). 
    ForMember(d=> d.AccIndex, 
     o=>MapFrom(s => s.AcctList.Select(c => c.AccIndex).ToArray())); 

这让我空,并与toArray我觉得这只会让一切慢(指定者比再次打破它)。

是不是有一个简单的方法来映射两者?唯一的区别是一个是集合和另一个数组,但不知何故,我在谷歌上找不到任何东西。

一些更多的东西,我想,总是导致许多空值:

Mapper.CreateMap<AccountCollection, 
    AcctArray>(); 
Mapper.Map(AcctIndexesList, newIndexesArray); 

Mapper.CreateMap<AccountCollection, 
    AcctArray[]>(); 
Mapper.Map(AcctIndexesList, newIndexesArray2); 

我被要求出示收集和阵列怎么看起来像这样:

public class AccountCollection: IList, ICollection, IList<AcctIndexes>,  
ICollection<AcctIndexes>, IEnumerable<AcctIndexes>, IEnumerable { 

public AcctIndexesCollection(); 
public virtual int Count { get; } 
public int Rows { get; set; } 
public virtual AcctIndexes this[int index] { get; set; } 
public virtual int Add(AcctIndexes value); 
... 
} 

public class AcctIndexes : IFormattable 
{ 
    public bool AccIndexSpecified; 
    public AcctIndexes(); 

    public int AccIndex { get; set; } 
} 

和这些数组:

public partial class AcctArray { 
    private int accIndexField;  
    public int AccIndex 
    { 
    get { 
      return this.accIndexField; 
     } 
    set { 
      this.accIndexField = value; 
     } 
    } 
} 

感谢

+3

请使用正确的格式。 –

+1

** System.LINQ **命名空间包含一个扩展方法'List ToList(此IEnumerable 源)',它可用于* ICollection *的所有实现,因为它扩展了* IEnumerable *。这有帮助: –

+1

显示你的'AccountCollection'和'AcctArray'类。 –

回答

0

好吧,我解决了我的问题。 我的问题是我没有正确使用映射器。 关于“CreateMapper”U只需要放置核心项目,并且在“Mapper.Map”上只需要放置它们的通用集合即可。 对我而言:

Mapper.CreateMap<AcctIndexes, AcctIndexes>(); 
Mapper.Map<ICollection<AcctIndexes>, AcctIndexes[]>(); 
相关问题