2016-04-21 6 views
0

Ich Mapping csv-Datei mit School-Aufzeichnungen mit CsvHelper Das Endergebnis sollte Liste der Schulen sein. 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; } 
} 

Eine der Spalten in der CSV-Datei gefunden ist SRef, die verknüpft werden soll 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 
     } 
    } 

Ich mag CSV-Datei mit einer Liste von Schools auf der Karte, aber ein Spalt bezogen auf StudentRef so mit CSVHelper, wie kann ich das erreichen?

+0

Dies ist ein unklarer Beitrag. Haben Sie linq an csv gedacht? –

+0

Ich benutze CsvHelper – Maro

+0

Ok, tut mir leid, meine Frage ist nicht klar, ich habe es ein bisschen geändert, in der Hoffnung, es ist jetzt klarer. Auch ich muss CsvHelper verwenden, danke – Maro

Antwort

0

Verwenden Sie eine 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

Danke Josho für die Beantwortung meiner Frage. ReferenceMap funktioniert nicht. das Beispiel, das Sie geben, ist nicht ähnlich zu meinem in meinem Fall: Person hat Liste

und jede Adresse hat Klasse Stadt jetzt muss ich City.Name zuordnen, aber die Liste der Adresse ist das Problem überprüfen Sie Ihre Antwort hier https: // groups.google.com/forum/#!topic/csvhelper/wojFoDVkSd0 – Maro

Verwandte Themen