首页 > 解决方案 > 如何用逗号分隔的字符串或 int 映射到 IEnumerable使用自动映射器

问题描述

我有一个IEnumerable<Student>来自给定数据库的结果集

public class Student
{
    public int StudentId { get; set; }
    public int Name { get; set; }
    public string SubjectIds { get; set; } //Comma delimited string of subject ID
    public string Grades { get; set; } //Comma delimited string of subject ID
}

我如何用IEnumerable<StudentListItemDto>给定的映射它

public class StudentListItemDto
{
    public int StudentId { get; set; }
    public int StudentName { get; set; }
    public IEnumerable<SubjectGradeDto> Tags { get; set; }
}

给定 SubjectGradeDto

public class SubjectGradeDto 
{
    public int SubjectId { get; set; }
    public string Grade { get; set; }
}

我也很感激 linq 解决方案

标签: linqautomapper

解决方案


如果 'students' 由 DB 给出,那么:

    var mappedStudents = students.Select(student =>
      new StudentListItemDto
      {
          StudentId = student.StudentId,
          StudentName = student.Name,
          Tags = student.SubjectIds.Split(',').Select( (subject, i) => new SubjectGradeDto { SubjectId = int.Parse(subject), Grade = student.Grades.Split(',')[i] })
      });

推荐阅读