C# 如何使用CSVHelper将新列添加到CSV并将其写回另一个CSV
我有一个包含许多列的csv文件,我想读取这些列,然后将一个新列添加到csv并将其写回 我可以将其读入动态对象,但如何向其中添加新列 我正在使用CSVHelper 我不想定义一个类来读取csv,因为列的数量非常多,而且它可能会改变 编辑1 答案是我正在寻找的,它帮助我解决了这个问题 由于该问题正确地解释了问题,因此不确定要添加什么内容。一些人回答了该问题(该问题可能看起来很基本,但这不可能是关闭该问题的原因)C# 如何使用CSVHelper将新列添加到CSV并将其写回另一个CSV,c#,csv,dynamic,csvhelper,C#,Csv,Dynamic,Csvhelper,我有一个包含许多列的csv文件,我想读取这些列,然后将一个新列添加到csv并将其写回 我可以将其读入动态对象,但如何向其中添加新列 我正在使用CSVHelper 我不想定义一个类来读取csv,因为列的数量非常多,而且它可能会改变 编辑1 答案是我正在寻找的,它帮助我解决了这个问题 由于该问题正确地解释了问题,因此不确定要添加什么内容。一些人回答了该问题(该问题可能看起来很基本,但这不可能是关闭该问题的原因)dynamic records=null; 使用(var sReader=newstrin
dynamic records=null;
使用(var sReader=newstringreader(“Id,Name\n1,Test”))
使用(var csvReader=new csvhelp.csvReader(sReader,CultureInfo.installedCulture))
{
records=csvReader.GetRecords().ToList();
}
foreach(记录中的var记录)
{
record.NewColumn=“新项目”;
}
使用(var csvWriter=new csvWriter(Console.Out,CultureInfo.InvariantCulture))
{
CSV编写者编写记录(记录);
}
如果需要动态添加列,可以这样添加它们
foreach(记录中的var记录)
{
var expandoDict=记录为IDictionary;
expandoDict.Add(“新列”、“新项”);
}
注意:
动力真的很慢。如果您只是在CSV中添加一个新字段,则可以直接读写,而不需要将其转换为任何类型的对象。您还可以直接使用底层类
void Main()
{
var s=新的StringBuilder();
s、 附录行(“Id,名称”);
s、 附录(“1,1”);
s、 附录(“2,2”);
使用(var reader=newstringreader(s.ToString()))
使用(var writer=new StringWriter())
使用(var parser=new CsvParser(reader,CultureInfo.InvariantCulture))
使用(var serializer=new CsvSerializer(writer,CultureInfo.InvariantCulture))
{
var row=parser.Read();
调整数组大小(参考行,行长度+1);
行[row.Length-1]=“标题名称”;
serializer.Write(行);
serializer.WriteLine();
而((row=parser.Read())!=null)
{
调整数组大小(参考行,行长度+1);
行[row.Length-1]=“字段值”;
serializer.Write(行);
serializer.WriteLine();
}
writer.Flush();
writer.ToString().Dump();
}
}
本例使用,这就是
.Dump()
方法的来源。感谢@JoshClose的注释。我没有想过直接写回写流。