2016-05-15 20 views
0

と地図要素私は2つのクラスがあります。C#の - Automapper - 条件

public class Customer 
{ 
    public string FirstName { get; set; } 

    public string LastName { get; set; } 

    public int Quantity { get; set; } 
}; 

public class Customer_ 
{ 
    public string FirstNam { get; set; } 

    public string LastNam { get; set; } 

    public int Quantity { get; set; } 
} 

そしてAutomapperライブラリーを持つ2つの間のマッピングを:

Customer[] data = new Customer[3]; 

var config = new MapperConfiguration(cfg => 
{ 
    cfg.CreateMap<Customer, Customer_>() 
    .ForMember(dest => dest.FirstNam, opt => opt.MapFrom(src => src.FirstName)) 
    .ForMember(dest => dest.LastNam, opt => opt.MapFrom(src => src.LastName)); 

}); 

IMapper mapper = config.CreateMapper(); 
Customer_[] desti = mapper.Map<Customer[], Customer_[]>(data); 

それは動作しますが、唯一の要素をマップする方法私の配列データの条件を満たすか?たとえば、次のように持っている唯一の要素をマップQuantity > x

感謝の

+0

AutoMapperは、ソースコレクションを「フィルタ」するように設計されていません。あなたがマップする前に、Linqまたは他の方法を使用してフィルタリングしてください。 –

答えて

1

あなたはAutoMapperにマッピングする前に、一般的に、私はこれを行うだろう:

Customer_[] desti = mapper.Map<Customer[], Customer_[]>(
    data.Where(c => c.Quantity > 10).ToArray()); 

はにインテリジェンスのこの種を入れしようとしないでくださいAutoMapper、それは混乱し、バグにつながるでしょう。

+0

これは本当に間違いですか? –

+0

とにかく私は混乱しています。私はマッピング設定の中にあまりにも多くのロジックを持っているのは好きではありません。 –