0

オブジェクトの (ソース) リストを宛先オブジェクトのプロパティにマップしたい:

class Source
{
    public string Name { get; set; }
}

class Destination
{
    public List<Source> ThingsWithNames { get; set; }
}

私が見たすべての質問は逆ですが、ここでオブジェクトを「平坦化」したいと思います。

4

1 に答える 1

0

私が正しく理解していれば...

何をしているのか

Mapper.Map<Source, Destination>(sourceList);

本当に

Mapper.Map<Source, Destination>(IList<Source> sourceList);  // this is an error

これには AutoMapper は必要ありません。代わりに、次のとおりです。

var destination = new Destination();
// or if you have another entity
var destination = Mapper.Map<Destination>(someotherEntity);

destination.ThingsWithNames = sourceList;

あなたsomeotherEntityがのリストを含むコンポジットである場合、Sourceそのマッピングを定義します。

Mapper.CreateMap<SomeotherEntity, Destination>()
    .ForMember(d => d.ThingsWithNames, e => e.SourceList))

のNameプロパティのみを気にする場合Sourceは、マッピングを定義します

Mapper.CreateMap<Source, string>().ConvertUsing(s => s.Name);

List<string>コレクションが必要な場合は、自動的に

SomeOtherEntity
    List<Source> SourcesList { get; set; }

Destination
    List<string> ThingsWithNames { get; set; }

var destination = Mapper.Map<Destination>(someOtherEntity);
// now destination.ThingsWithNames is a List<string> containing your Source names
于 2013-06-16T00:01:01.647 に答える