2017-12-02 5 views
2

Ich versuche eine CSV-Datei zu lesen, die von einem Upload-Formular gesendet wurde, und sie in mein Poco zu konvertieren. Hier ist meine Testdatei:Konvertierung von CSV nach Poco nicht möglich

"30247685204","PWITA1","114000/2017/SE","","27/11/2017","1027/00","","","ZZPWI1","INTER MEMBER1", 
"30247685205","PWITA2","114000/2017/SE","","27/11/2017","1027/00","","","ZZPWI2","INTER MEMBER2" 

Hier ist meine Poco:

public class MyOrder 
{ 
    public string TrackingID { get; set; } 
    public string CarrierName { get; set; } 
    public string ConNo { get; set; } 
    public string import_id { get; set; } 
    public string EnteredDate { get; set; } 
    public string CustomerRef { get; set; } 
    public string ConDescription { get; set; } 
    public string TransferAcCode { get; set; } 
    public string AccountNo { get; set; } 
    public string AccountName { get; set; } 
} 

Hier ist, wie ich den Inhalt der Datei in meinem Dienst erhalten:

foreach (var uf in Request.Files.Where(f => f.ContentLength > 0)) 
{ 
    var content = new StreamReader(uf.InputStream).ReadToEnd(); 
    var orders = content.FromCsv<List<MyOrder>>(); 
} 

Wenn ich auf var content brechen Ich kann sehen, dass ich den Dateiinhalt so bekomme:

"\"30247685204\",\"PWITA1\",\"114000/2017/SE\",\"\",\"27/11/2017\",\"1027/00\",\"\",\"\",\"ZZPWI1\",\"INTER MEMBER1\",\r\n\"30247685205\",\"PWITA2\",\"114000/2017/SE\",\"\",\"27/11/2017\",\"1027/00\",\"\",\"\",\"ZZPWI2\",\"INTER MEMBER2\"\r\n" 

Das Problem ist, dass ich die richtige Liste meiner Poco Bestellungen in var orders nicht bekommen kann. Ich bekomme nur ein Element (in der Datei habe ich zwei) und es ist leer ... alle Eigenschaften sind auf null gesetzt! Ich handle immer mit JSON-Objekt und ich hatte kein Problem in der Vergangenheit, dies ist mein erster Versuch, eine CSV-Datei zu lesen, und ich kann nicht verstehen, wo ich falsch liege!

Antwort

2

können Sie geben nicht die erste Zeile der CSV als Header mit zu behandeln:

CsvConfig<MyOrder>.OmitHeaders = true; 

Vorzugsweise statische Konfiguration sollte einmal im AppHost Configure() eingestellt werden, dann können Sie deserialisieren es mit:

var orders = CsvSerializer.DeserializeFromStream<List<MyOrder>>(uf.InputStream); 
+0

Vielen Dank mythz! Alles funktioniert jetzt! – wizzy

Verwandte Themen