Почему это сопоставление свойств не приводит к желаемому порядку столбцов CSV? - PullRequest
0 голосов
/ 24 марта 2020

Я уже пробовал это решение , но в моем подходе что-то не так, что порядок, назначенный на карте, не выводится в файл CSV.

public class Student
{
    public String Id { get; set; }
    public String Name { get; set; }
    public String Sport { get; set; }
    public String Risk { get; set; }
    public String Comment { get; set; }
}

public sealed class StudentMap : ClassMap<Student>
{
    public StudentMap()
    {
        Map(m => m.Id).Index(3);
        Map(m => m.Name).Index(1);
        Map(m => m.Sport).Index(2);
        Map(m => m.Risk).Index(0);
        Map(m => m.Comment).Index(4);
    }
}
List<Student> ListStudentFinal = new List<Student>();

using (var writer = new StreamWriter("output.csv"))
using (var csv = new CsvWriter(writer, System.Globalization.CultureInfo.InvariantCulture))
{
    csv.WriteField("OUTPUT TITLE TEST");
    csv.NextRecord();
    csv.Configuration.RegisterClassMap<StudentMap>();
    csv.WriteRecords(ListStudentFinal);
    csv.Flush();
}

Выход CSV продолжает записываться так:

Risk,Id,Name,Sport,Comment

Что-то не так с этим подходом? Или есть другой способ проверить?

Ответы [ 2 ]

0 голосов
/ 24 марта 2020

Попробуйте зарегистрировать ClassMap, прежде чем что-либо писать.

List<Student> ListStudentFinal = new List<Student>();

using (var writer = new StreamWriter("output.csv"))
using (var csv = new CsvWriter(writer, System.Globalization.CultureInfo.InvariantCulture))
{
    csv.Configuration.RegisterClassMap<StudentMap>();
    csv.WriteField("OUTPUT TITLE TEST");
    csv.NextRecord();
    csv.WriteRecords(ListStudentFinal);
    csv.Flush();
}
0 голосов
/ 24 марта 2020

Я создал новый. Net Консольный проект Core 3.1, добавил CsvHelper (15.0.3), взял ваш код дословно и все заработало. С заголовком:

Risk,Name,Sport,Id,Comment

Это указывает на некоторые другие проблемы или повреждения в вашем проекте. Вы можете просто попробовать создать новый проект. Или, возможно, вы используете более старую версию CsvHelper, которая ведет себя не так, как текущая версия.

...