一、Dto & Model约定
class TestDto
{
public string Name { get; set; }
public int Age { get; set; }
public List<string> Candidates { get; set; }
}
class TestModel
{
public string Name { get; set; }
public int Age { get; set; }
public List<CandidateModel> Candidates { get; set; }
}
class CandidateModel
{
public DateTime StartTime { get; set; }
public string Candidate { get; set; }
}
二、需求:筛选出TestModel中StartTime小于当前时间的候选人,并将其传输给TestDto的Candidates字段。
class Program
{
static void Main(string[] args)
{
var testModel = new TestModel()
{
Name = "Frankie",
Age = 22,
Candidates = new List<CandidateModel>()
{
new CandidateModel(){StartTime = new DateTime(2018, 10, 9, 10, 0, 0), Candidate = "贝贝"},
new CandidateModel(){StartTime = new DateTime(2018, 10, 22, 10, 0, 0), Candidate = "asan"},
new CandidateModel(){StartTime = new DateTime(2018, 10, 10, 10, 0, 0), Candidate = "pangzi"}
}
};
// DataTime.Now : {2018/10/21 21:51:12}
testModel.Candidates = testModel.Candidates.Where(_ => _.StartTime < DateTime.Now).ToList();
Mapper.Initialize(_ => _.CreateMap<TestModel, TestDto>()
.ForMember(s => s.Candidates,
d => d.MapFrom(x => x.Candidates.Select(y => y.Candidate))));
var testDto = Mapper.Map<TestDto>(testModel);
}
}
Result: