从集合映射到数组

时间:2015-06-21 14:33:19

标签: c# automapper

嗨我看了,只看到了数组到list \ collection的例子,但没有看到相反的方法。

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

我尝试了以下内容:

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

这给了我空,而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;
         }
   }
}

由于

1 个答案:

答案 0 :(得分:0)

好的我解决了我的问题。 我的问题是我没有正确使用映射器。 在“CreateMapper”上,U只需要放置核心项,而在“Mapper.Map”中,你只需要放置它们的泛型集合。 就我而言:

Mapper.CreateMap<AcctIndexes, AcctIndexes>();
Mapper.Map<ICollection<AcctIndexes>, AcctIndexes[]>();