C# automapper-RESTAPI中的复杂对象到列表映射

C# automapper-RESTAPI中的复杂对象到列表映射,c#,automapper,C#,Automapper,下面是我的源对象 public class Source { public string Name { get; set; } public DateTime GeneratedFrom { get; set; } public DateTime GeneratedTo { get; set; } } 然后是目标对象 public class Destination { public DateTime Day{ get; set; } public

下面是我的源对象

public class Source
{

    public string Name { get; set; }
    public DateTime GeneratedFrom { get; set; }
    public DateTime GeneratedTo { get; set; }

}
然后是目标对象

public class Destination
{
    public DateTime Day{ get; set; }
    public string Name { get; set; } 
}
目标中的日期从
Source.GenerateFrom
Source.GenerateTo
获取其值(迭代到
Source.GenerateFrom dest.Day,
opt=>opt.MapFrom(src=>src.GenerateFrom))
.AfterMap((src,dest)=>
{
var StartDate=src.GenerateFrom;
var EndDate=src.GenerateTo;
列表=新列表();

while(Startdate您可以为您的对象注册此映射,如果
Day
始终从
GeneratedFrom
属性获取它的值。(或根据需要修改它)

然后使用
Newtonsoft.Json
library将其序列化:

var json = JsonConvert.SerializeObject(destList);

让我们看看你的时间loop@RomanMarusyk使用mapper Profile更新帖子您只需在
IEnumerable
上调用
Map
,无需选择
列表。
CreateMap<Source, Destination>()
.forMember(
 dest => dest.Day,
 opt => opt.MapFrom(src => src.GenerateFrom))
 .AfterMap((src, dest) =>
 {
     var StartDate = src.GenerateFrom;
     var EndDate = src.GenerateTo;

     List<Destination> list = new List<Destination>();
     while(Startdate <= EndDate)
     {
        var data = new Destination {Day = StartDate, name = src.Name};
        list.Add(data);
        StartDate.AddDays(1);
     }
 });
CreateMap<Source, Destination>()
                    .ForMember(d => d.GeneratedFrom, o => o.MapFrom(s => s.Day))
                    .ForMember(d => d.Name, o => o.MapFrom(s => s.Name));
var destList = sourceList.Where(x => x.GeneratedFrom <= x.GeneratedTo)
                         .Select(_mapper.Map<Destination>).ToList();
var json = JsonConvert.SerializeObject(destList);