0
私は性質の多くとのViewModelを持っており、他のviewmodelsAutoMapper:ネストされたモデルの行数の制限
public ICollection<ListView> Elements { get; set; }
のコレクションの多くは、私がAutoMapperだけで、このコレクションの最初の10個の要素を取ることをどこかに指定することができます?
私は性質の多くとのViewModelを持っており、他のviewmodelsAutoMapper:ネストされたモデルの行数の制限
public ICollection<ListView> Elements { get; set; }
のコレクションの多くは、私がAutoMapperだけで、このコレクションの最初の10個の要素を取ることをどこかに指定することができます?
マップで解決することができます。これは、あなたのようなので、自分自身の表現に入れる機会を与えるだろう:あなたのマッピングの設定で使用して
YourClassConstructorOrWhatever(){
AutoMapper.Mapper.CreateMap<YourSourceObject, YourDestObject>()
.ForMember(dest => dest.Elements, opt => opt.ResolveUsing(src =>
{
var result = new List<YourMapObject>();
foreach (var element in src.Elements.Take(10))
{
result.Add(Mapper.Map<YourMapObject>(element));
}
return result;
}));
}
Resolveは、あなたが別のものをマップする方法を指定することができます。
は詳細情報と例がここで見つけることができます:あなたはまた、これを行うには、カスタムリゾルバを使用することができ https://github.com/AutoMapper/AutoMapper/wiki/Custom-value-resolvers
Mapper.Initialize(cfg => {
cfg.CreateMap<Source, Destination>()
.ForMember(dest => dest.Total,
opt => opt.ResolveUsing<CustomResolver, decimal>(src => src.SubTotal));
cfg.CreateMap<OtherSource, OtherDest>()
.ForMember(dest => dest.OtherTotal, opt => opt.ResolveUsing<CustomResolver, decimal>(src => src.OtherSubTotal));
});
public class CustomResolver : IMemberValueResolver<object, object, decimal, decimal> {
public decimal Resolve(object source, object destination, decimal sourceMember, decimal destinationMember, ResolutionContext context) {
// your mapper logic here
}
}
はあなたにもちょうどMapper.Map <リストを返すんでしたように思えます>(src.Elements.Take(10)); foreachループの代わりに。 –
stibay
@stibay大きな単純化!はい、それも動作します。 –