【发布时间】:2020-03-26 18:39:25
【问题描述】:
是否有任何配置或什么可以让我在最后一个值之后添加;?
FirstName;SecondName
A;B
我需要它
FirstName;SecondName;
A;B;
这是我的代码:
using (TextWriter writer = new StreamWriter(fd.FileName, false, System.Text.Encoding.UTF8))
{
var csv = new CsvWriter(writer, new CsvConfiguration(CultureInfo.InvariantCulture)
{
Delimiter = ";",
});
csv.Configuration.RegisterClassMap<DataRowClassMap>();
csv.WriteRecords(_rows);
}
提前致谢
编辑。地图类
public sealed class DataRowClassMap : ClassMap<DataRow>
{
public DataRowClassMap()
{
Map(m => m.ListingNumber).Ignore();
Map(m => m.FirstName).Index(0).Name("FirstName");
Map(m => m.LastName).Index(1).Name("LastName");
}
}
【问题讨论】:
-
有一个空名称的虚拟空属性?顺便说一句,您可以分享 DataRowClassMap。您可以在地图中指定列索引,因此它始终是最后一个。
-
@DragandDrop 哈哈,是的,我刚来了,但它太丑了
Func<DataRow, string> func = x => ""; Map(x => x.HackForCommaAfterLastColumn).Index(29).Name("").ConvertUsing(func); -
另一种选择可能是不使用
WriteRecords,而是使用foreach+WriteRecord不带s 和WriteField来添加';' -
在写入字段后缺少 csv.NextReccord()。它应该可以工作。大脑编译器告诉我有什么不对劲。但是如果没有适当的 edi,就无法弄清楚会发生什么。
-
您应该将答案放在答案框中,而不是放在问题本身中。随意回答你自己的问题。我不会因为我们的那些小提示和头脑风暴而感到沮丧。