我正在开发一个 C# Windows 服务,该服务使用 CsvHelper 及其按索引功能的类映射将 csv 文件读入
List<model>
。我想在每个模型中存储原始的原始数据行。
我尝试过使用
Map(m => m.Row).Index(-1);
,但没有用。我也尝试过 ConvertUsing
,但我收到一条消息,指出 MemberMap 不包含“ConvertUsing”的定义。
RegisterClassMap
和csv.GetRecords
功能正在执行批量读取,这并不让我有机会捕获原始的原始数据行。
任何帮助将不胜感激。我需要创建一封电子邮件,其中包含状态(将数据发送到微服务)和原始原始数据两个,并且希望在 CsvHelper 读取文件时存储它。
void Main()
{
var s = new StringBuilder();
s.Append("Id,Name\r\n");
s.Append("1,one\r\n");
var config = new CsvConfiguration(CultureInfo.InvariantCulture)
{
};
using (var reader = new StringReader(s.ToString()))
using (var csv = new CsvReader(reader, config))
{
csv.Context.RegisterClassMap<FooMap>();
csv.GetRecords<Foo>().ToList().Dump();
}
}
private class Foo
{
public int Id { get; set; }
public string Name { get; set; }
public string RawRow { get; set; }
}
private class FooMap : ClassMap<Foo>
{
public FooMap()
{
Map(m => m.Id);
Map(m => m.Name);
Map(m => m.RawRow).Convert(args => args.Row.Parser.RawRecord);
}
}
.Dump()
是一个 LINQPad 方法。