C# 从集合到数组的映射

C# 从集合到数组的映射,c#,automapper,C#,Automapper,您好,我看了一下,只看到了从数组到列表\集合的示例,但没有看到相反的示例 我有一个集合,其属性AccIndex,我想映射到 具有名为AccIndex的属性的数组 我尝试了以下方法: Mapper.CreateMap<AccountCollection, AcctArray[]>(). ForMember(d=> d.AccIndex, o=>MapFrom(s => s.AcctList.Select(c => c.AccIndex

您好,我看了一下,只看到了从数组到列表\集合的示例,但没有看到相反的示例

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

我尝试了以下方法:

Mapper.CreateMap<AccountCollection, AcctArray[]>().
    ForMember(d=> d.AccIndex, 
         o=>MapFrom(s => s.AcctList.Select(c => c.AccIndex).ToArray()));
我被要求展示集合和阵列的外观:

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; }
}
谢谢

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

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

请使用正确的格式。System.LINQ命名空间包含扩展方法
List ToList(此IEnumerable源)
,该扩展方法可用于ICollection的所有实现,因为它扩展了IEnumerable。这是否有帮助:显示您的
AccountCollection
AcctArray
类。我考虑过,但据我所知,“toList\toArray”是o(n),这意味着它将遍历所有列表以使其成为列表\数组,然后它将再次遍历列表\数组以实际执行映射-因此它将加倍时间。在这种情况下,我宁愿自己做一个for循环并映射它-我试图使用automapper来提高速度(:我错了吗?
public partial class AcctArray {
  private int accIndexField;    
  public int AccIndex 
  {
     get {
           return this.accIndexField;
         }
     set {
           this.accIndexField = value;
         }
   }
}
Mapper.CreateMap<AcctIndexes, AcctIndexes>();
Mapper.Map<ICollection<AcctIndexes>, AcctIndexes[]>();