Ich habe eine Datensatzzuordnung definiert, um eine Liste von Zeichenfolgen in verschiedene Spalten zu ändern, aber aus irgendeinem Grund überschreiben die „Ergebnis“-Felder die anderen Felder (Nachname, Geburtsdatum usw.).
Wenn ich die folgende Zeile auskommentiere
dann ist die Ausgabe ansonsten korrekt, außer dass es kein Ergebnis1, Ergebnis2 usw. gibt.
Die Anzahl der Ergebnisse ist für jeden Datensatz variabel und maximal 150, weshalb ich mich für diesen Ansatz entschieden habe.
Code: Select all
public class RecordMap : ClassMap
{
public RecordMap()
{
Map(m => m.CustomerReference);
Map(m => m.Forename);
Map(m => m.Surname);
Map(m => m.DOB);
Map(m => m.Timestamp);
Map(m => m.Score);
Map(m => m.Result).Index(1,150);
}
}
public class OutputRecord
{
public string CustomerReference { get; set; }
public string Forename { get; set; }
public string Surname { get; set; }
public string DOB { get; set; }
public DateTime Timestamp { get; set; }
public string Score { get; set; }
public List Result { get; set; }
}
Mit dem Code in seiner jetzigen Form ist die Ausgabe völlig durcheinander, sodass die Spaltenüberschriften nicht den richtigen Feldern entsprechen. Die Ergebnisspalten beginnen auch an Position 3 der Ausgabedatei und nicht am Ende, wie ich es gerne hätte.
Weiß jemand, warum das passiert und wie man es vermeidet? Ich möchte, dass die Ergebnisliste in eine Spalte pro Eintrag konvertiert wird.
Danke
Bearbeiten: Code für das CSV-Schreiben wie gewünscht hinzufügen
Code: Select all
using (var writer = new StreamWriter(OutputLocation.Text))
using (var csv = new CsvWriter(writer))
{
csv.Configuration.HasHeaderRecord = true;
csv.Configuration.RegisterClassMap();
csv.WriteRecords(outputRecords);
}
Ich habe eine Datensatzzuordnung definiert, um eine Liste von Zeichenfolgen in verschiedene Spalten zu ändern, aber aus irgendeinem Grund überschreiben die „Ergebnis“-Felder die anderen Felder (Nachname, Geburtsdatum usw.).
Wenn ich die folgende Zeile auskommentiere
[code]Map(m => m.Result).Index(1,150);
[/code]
dann ist die Ausgabe ansonsten korrekt, außer dass es kein Ergebnis1, Ergebnis2 usw. gibt.
Die Anzahl der Ergebnisse ist für jeden Datensatz variabel und maximal 150, weshalb ich mich für diesen Ansatz entschieden habe.
[code]public class RecordMap : ClassMap
{
public RecordMap()
{
Map(m => m.CustomerReference);
Map(m => m.Forename);
Map(m => m.Surname);
Map(m => m.DOB);
Map(m => m.Timestamp);
Map(m => m.Score);
Map(m => m.Result).Index(1,150);
}
}
public class OutputRecord
{
public string CustomerReference { get; set; }
public string Forename { get; set; }
public string Surname { get; set; }
public string DOB { get; set; }
public DateTime Timestamp { get; set; }
public string Score { get; set; }
public List Result { get; set; }
}
[/code]
Mit dem Code in seiner jetzigen Form ist die Ausgabe völlig durcheinander, sodass die Spaltenüberschriften nicht den richtigen Feldern entsprechen. Die Ergebnisspalten beginnen auch an Position 3 der Ausgabedatei und nicht am Ende, wie ich es gerne hätte.
Weiß jemand, warum das passiert und wie man es vermeidet? Ich möchte, dass die Ergebnisliste in eine Spalte pro Eintrag konvertiert wird.
Danke
Bearbeiten: Code für das CSV-Schreiben wie gewünscht hinzufügen
[code]using (var writer = new StreamWriter(OutputLocation.Text))
using (var csv = new CsvWriter(writer))
{
csv.Configuration.HasHeaderRecord = true;
csv.Configuration.RegisterClassMap();
csv.WriteRecords(outputRecords);
}
[/code]