私は、単純なDTOオブジェクトのリスト上で翻訳する必要がある複雑なオブジェクトを持っています。オートマトンと複合オブジェクト
マイマップはこれです:私はこのmapper.Map<IList<MyDto>>(my_singol_objA);
ようsingolでOBJA を働いているが、私はmapper.Map<IList<MyDto>>(my_list_of_objA);
CreateMap<ObjASource, IEnumerable<MyDto>>()
.ConvertUsing(source => source.ObjB?.ObjC?.Select(p => new MyDto
{
field1 = source.field1,
field2 = source.field2,
field3 = source.field3,
field4 = p.fieldX,
field5 = p.fieldY
}).ToList()
);
これを修正するために追加しなければならない地図の種類はわかりません。
おかげでみんな
EDITED私はより良い説明したい
を解決し、より簡単な方法私の問題ではなかったので、多分誰かが私を助けることができます。 私はコレクション内に複雑なオブジェクトを持っています。このような
オブジェクト:
public class Product {
int product_id {get; set;};
string name {get; set;};
List<CompaniesProvideProduct> company {get; }
}
CompaniesProvideProductは、製品を販売し、より多くの詳細を持っている会社との関係が含まれています。
public class CompaniesProvideProduct {
int product_id {get; set;};
int company_id {get; set;};
decimal price {get; set;};
}
その後、私の翻訳の宛先オブジェクトは、次のとおりです。私のプログラムで
私は一覧DBから取得し、私はリストにこのオブジェクトを翻訳したいです。私はProductDtoのレコードを1レコード持っています。
私が試した:
CreateMap<Product, ProductDto>(); //to get product_id and name
CreateMap<CompaniesProvideProduct, ProductDto>(); //to get company_id and price
CreateMap<Product, IEnumerable<ProductDto>>()
.ConvertUsing<ProductConverter>();
public class ProductConverter : ITypeConverter<Product, IEnumerable<ProductDto>>
{
IEnumerable<ProductDto> ITypeConverter<Product, IEnumerable<ProductDto>>.Convert(Product source, IEnumerable<ProductDto> destination, ResolutionContext context)
{
Product prod = source;
foreach (var dto in prod.company.Select(e => context.Mapper.Map<ProductDto>(e)))
{
context.Mapper.Map(prod, dto);
yield return dto;
}
}
}
しかし、これは私のために動作しません。誰かが私を助けることができるなら、私はとても幸せになるでしょう。
ありがとうございました。
コレクションは、デフォルトで処理され、それらのマップは必要ありません。 –
ありがとうございます@LucianBargaoanu私はこれを知っていたが、私のマッピングが正しくないと私はエラーが表示されます。 –