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);