Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用CSVHelper将新列添加到CSV并将其写回另一个CSV_C#_Csv_Dynamic_Csvhelper - Fatal编程技术网

C# 如何使用CSVHelper将新列添加到CSV并将其写回另一个CSV

C# 如何使用CSVHelper将新列添加到CSV并将其写回另一个CSV,c#,csv,dynamic,csvhelper,C#,Csv,Dynamic,Csvhelper,我有一个包含许多列的csv文件,我想读取这些列,然后将一个新列添加到csv并将其写回 我可以将其读入动态对象,但如何向其中添加新列 我正在使用CSVHelper 我不想定义一个类来读取csv,因为列的数量非常多,而且它可能会改变 编辑1 答案是我正在寻找的,它帮助我解决了这个问题 由于该问题正确地解释了问题,因此不确定要添加什么内容。一些人回答了该问题(该问题可能看起来很基本,但这不可能是关闭该问题的原因)dynamic records=null; 使用(var sReader=newstrin

我有一个包含许多列的csv文件,我想读取这些列,然后将一个新列添加到csv并将其写回

我可以将其读入动态对象,但如何向其中添加新列

我正在使用CSVHelper

我不想定义一个类来读取csv,因为列的数量非常多,而且它可能会改变

编辑1 答案是我正在寻找的,它帮助我解决了这个问题

由于该问题正确地解释了问题,因此不确定要添加什么内容。一些人回答了该问题(该问题可能看起来很基本,但这不可能是关闭该问题的原因)

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的注释。我没有想过直接写回写流。