CsvHelper地图采集

本文关键字:地图 CsvHelper | 更新日期: 2024-10-22 08:39:16

我正在使用CsvHelper将csv文件与学校记录映射最终结果应该是学校列表。类似的问题可以在这里找到

 public class School
{
    public IList<Student> Students{ get; set; } 
}
public class Student
{
    public StudentRef Reference{ get; set; }
}
public class StudentRef
{
    public string RefNumber{ get; set; }
}

CSV文件中的一列是SRef,应链接到StudentRef.RefNumber

public sealed class StudentRefMap : CsvClassMap<StudentRef>
    {
        public StudentRefMap ()
        {
            Map(m => m.RefNumber).Name("SRef");
        }
    }
     public sealed class StudentMap : CsvClassMap<Student>
    {
        public StudentMap ()
        {
             References<StudentRefMap >(m => m.Reference);
        }
    }
    public sealed class SchoolMap : CsvClassMap<School>
    {
        public SchoolMap ()
        {
            //References<StudentMap>(m => m.Students);//doesn't work
             Map(m => m.Students)
                .ConvertUsing(row => new List<Student>
                {row.GetRecord<Student>()}); // doesn't work
        }
    }

我想将csv文件与Schools列表映射,但其中一列指的是StudentRef,所以使用CSVHelper,我如何实现这一点?

CsvHelper地图采集

使用ReferenceMap。http://joshclose.github.io/CsvHelper/#mapping-参考地图

public sealed class PersonMap : CsvClassMap<Person>
{
    public PersonMap()
    {
        Map( m => m.Id );
        Map( m => m.Name );
        References<AddressMap>( m => m.Address );
    }
}
public sealed class AddressMap : CsvClassMap<Address>
{
    public AddressMap()
    {
        Map( m => m.Street );
        Map( m => m.City );
        Map( m => m.State );
        Map( m => m.Zip );
    }
}