2016-04-21 3 views
0

Я собираю файл csv с помощью записей школы, используя CsvHelper Конечный результат должен быть в списке школ. Similar issue can be found hereCsvHelper Map Colletion

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, как я могу это достичь?

+0

Это сообщение неясное. Вы что-то думали о linq для csv? –

+0

Я использую CsvHelper – Maro

+0

Хорошо, извините, мой вопрос непонятен, я немного изменил его, надеясь, что теперь станет ясно. также мне нужно использовать CsvHelper, спасибо – Maro

ответ

0

Использовать 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); 
    } 
} 
+2

Спасибо Josho за ответ на мой вопрос. ReferenceMap не работает. пример, который вы даете, не похож на мой в моем случае: у человека есть список

, и у каждого адреса есть класс города теперь мне нужно на карте City.Name, но в списке адресов стоит вопрос проверить свой ответ здесь https: // groups.google.com/forum/#!topic/csvhelper/wojFoDVkSd0 – Maro

Смежные вопросы