我已经尝试过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
这种方法有什么问题吗?还是有其他测试方法?
我创建了一个新的.Net Core 3.1控制台项目,添加了CsvHelper(15.0.3),使您的代码保持原状,并且可以正常工作。标头为:
Risk,Name,Sport,Id,Comment
这表明您的项目中存在其他问题或损坏。您可能只想尝试创建一个新项目。或者,也许您使用的CsvHelper较旧版本的行为与当前版本相比有所不同。
在编写任何内容之前,请先尝试注册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();
}