我正在用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
}
}我想用Schools列表来映射csv文件,但是有一列是指StudentRef,所以使用CSVHelper,如何实现?
发布于 2016-04-22 02:29:21
使用ReferenceMap。http://joshclose.github.io/CsvHelper/#mapping-reference-map
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 );
}
}https://stackoverflow.com/questions/36757299
复制相似问题