为什么此属性映射不会导致所需的CSV列排序?

问题描述 投票:0回答:2

我已经尝试过this solution,但是我的方法存在问题,即地图中指定的顺序未在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

这种方法有什么问题吗?还是有其他测试方法?

c# .net csv csvhelper
2个回答
0
投票

我创建了一个新的.Net Core 3.1控制台项目,添加了CsvHelper(15.0.3),使您的代码保持原状,并且可以正常工作。标头为:

Risk,Name,Sport,Id,Comment

这表明您的项目中存在其他问题或损坏。您可能只想尝试创建一个新项目。或者,也许您使用的CsvHelper较旧版本的行为与当前版本相比有所不同。


0
投票

在编写任何内容之前,请先尝试注册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();
}
© www.soinside.com 2019 - 2024. All rights reserved.