C# - AutoMapper之不同类型的转换
一、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: