我想将对象的(源)列表映射到目标对象的属性:
class Source
{
public string Name { get; set; }
}
class Destination
{
public List<Source> ThingsWithNames { get; set; }
}
我看到的所有问题都是相反的,但我想在这里“展开”我的对象。
我想将对象的(源)列表映射到目标对象的属性:
class Source
{
public string Name { get; set; }
}
class Destination
{
public List<Source> ThingsWithNames { get; set; }
}
我看到的所有问题都是相反的,但我想在这里“展开”我的对象。
如果我理解正确...
你在做什么
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