【发布时间】:2019-08-27 21:09:51
【问题描述】:
我正在尝试接受客户端 CSV 文件,将其映射为标准格式,并生成标准输出。除了,每个客户端可以不同地命名标头,并且不能保证序号位置。
我已经为标准格式创建了类。我什至为它创建了一个有效的映射器。我只想将映射器放在数据库中,这样我就可以为映射添加行,而不是每次客户端更改其源文件时都重新构建和部署此代码。
static void Main()
{
using (var reader = new StreamReader("filepath\\filename.csv"))
using (var writer = new StreamWriter("filepath\\Output filename.csv"))
using (var csvIn = new CsvReader(reader))
{
csvIn.Configuration.RegisterClassMap<CsvMap>();
csvIn.Configuration.PrepareHeaderForMatch = (string header, int index) => header.ToUpper();
var records = csvIn.GetRecords<CsvClass>();
using (var csvOut = new CsvWriter(writer))
{
csvOut.WriteRecords(records);
}
}
}
public class CsvClass
{
[Optional]
public Guid CompanyID{ get; set; }
[Optional]
public string RecordID{ get; set; }
}
public sealed class CsvMap : ClassMap<CsvClass>
{
public CsvMap()
{
Map(m => m.CompanyID).Name("OrganizationID").Optional();
Map(m => m.CompanyID).Name("CompanyID").Optional();
Map(m => m.RecordID).Name("RecordID").Optional();
}
}
我是一名数据库开发人员,不擅长 c#,需要一个指向我应该使用什么的指针,以便可以通过数据库或 json 完成这些映射,并将它们构建出来并轻松维护。
{"target_field" : "CompanyID"
"source_field" : "OrganizationID"},
{"target_field" : "CompanyID"
"source_field" : "CompanyID"},
{"target_field" : "RecordID"
"source_field" : "RecordID"},
感谢您的帮助
【问题讨论】:
标签: csvhelper